gpt4 book ai didi

javascript - typescript 导入@google-cloud/pubsub

转载 作者:行者123 更新时间:2023-11-30 15:21:31 24 4
gpt4 key购买 nike

我想将非 TypeScript 模块导入 TypeScript 项目。

这个项目没有自己的声明或@types 声明,所以我为模块创建了自己的声明。但是当我在声明文件中声明模块时,出现以下错误:

Invalid module name in augmentation. Module '@google-cloud/pubsub' resolves to an untyped module at './node_modules/@google-cloud/pubsub/src/index.js', which cannot be augmented.

我正在使用 TypeScript 2.2.2

完整的声明文件如下:

import stream from 'stream'
import events from 'events'

interface ConfigurationObject extends Object {
projectId?: string
keyFilename?: string
email?: string
credentials?: CredentialsObject
autoRetry?: boolean
maxRetries?: number
promise?: Function
}

interface CredentialsObject extends Object {
client_email?: string
private_key?: string
}

interface QueryOptions extends Object {
autoPaginate?: boolean
maxApiCalls?: number
maxResults?: number
pageSize?: number
pageToken?: string
}

interface SnapshotQueryOptions extends QueryOptions { }

interface TopicsQueryOptions extends Object { }

interface SubscriptionQueryOptions extends Object {
topic?: string
}

interface SubscribeOptions extends Object {
ackDeadlineSeconds: number
autoAck: boolean
encoding: string
interval: number
maxInProgress: number
pushEndpoint: string
timeout: number
}

interface SubscriptionOptions extends Object {
autoAck?: boolean
encoding?: string
interval?: number
maxInProgress?: number
timeout?: number
}

interface SubscriptionObject extends Object {
name: string
topic: string
pushConfig: PushConfigObject
ackDeadlineSeconds: number
}

interface PushConfigObject extends Object {
pushEndpoint: string
attributes: {
[key: string]: string
}
}

interface TopicObject extends Object {
name: string
}

interface SnapshotObject extends Object {
name: string
}

interface Message {
id: string
ackId: string
data: any
attributes: any
timestamp: number

ack(callback: Function): void
skip(): void
}

declare type ApiCallbackFunction<T> = (err: Error | null, data: T, apiResponse: any) => void

declare type CallbackFunction<T> = (err: Error | null, data: T) => void

declare type ApiPromiseResult<T> = [T, any]

declare class Subscription extends events.EventEmitter {
ack(
ackIds: string | string[],
options?: {
timeout: number
},
callback?: () => void
): Promise<void> | void

create(
options?: SubscribeOptions,
callback?: ApiCallbackFunction<SubscriptionObject>
): Promise<ApiPromiseResult<SubscriptionObject>> | void

createSnapshot(
name: string,
callback?: ApiCallbackFunction<SnapshotObject>
): Promise<ApiPromiseResult<SnapshotObject>> | void
}

declare class PubSub {
constructor(
config: ConfigurationObject
)

createTopic(
name: string,
callback?: ApiCallbackFunction<TopicObject>
): Promise<ApiPromiseResult<TopicObject>> | void

getSnapshots(
options?: SnapshotQueryOptions,
callback?: CallbackFunction<SnapshotObject[]>
): Promise<any[]> | void

getSnapshotsStream(
options?: SnapshotQueryOptions
): stream.Readable

getSubscriptions(
options?: SubscriptionQueryOptions,
callback?: ApiCallbackFunction<SubscriptionObject[]>
): Promise<ApiPromiseResult<SubscriptionObject[]>> | void

getSubscriptionsStream(
options?: SubscriptionQueryOptions
): stream.Readable

getTopics(
options?: TopicsQueryOptions,
callback?: ApiCallbackFunction<TopicObject[]>
): Promise<ApiPromiseResult<TopicObject[]>> | void

getTopicsStream(
options?: TopicsQueryOptions
): stream.Readable

snapshot(
name: string
): any

subscribe(
topic: TopicObject | string,
subName?: stream,
options?: SubscribeOptions,
callback?: ApiCallbackFunction<SubscriptionObject>
): Promise<ApiPromiseResult<SubscriptionObject>> | void

subscription(
name?: string,
options?: SubscriptionOptions
): void

topic(
name: string
): TopicObject
}

declare module '@google-cloud/pubsub' {
export = PubSub
}

最佳答案

activity on this 有很多(?) .可能上述答案不会按预期工作。现在你需要详细的:

import PubSub = require("@google-cloud/pubsub");
const pubSub: PubSub.PubSub = new (PubSub as any).PubSub()

关于javascript - typescript 导入@google-cloud/pubsub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43658409/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com