gpt4 book ai didi

javascript - 带有子模块的 Typescript 定义文件

转载 作者:行者123 更新时间:2023-12-02 16:09:51 25 4
gpt4 key购买 nike

我正在使用Vortex Web我的 TypeScript 源代码中的 JavaScript 库提供了 dds 对象。这是一个片段:

var runtime = new dds.runtime.Runtime();
runtime.connect("ws://localhost:9000", "user:pass");

var chatTopic = new dds.Topic(0, 'ChatMessage');
runtime.registerTopic(chatTopic);

对于这个库,我想编写一个定义文件。

这是我当前的尝试:

declare module VortexWebClient {

interface TopicQos {
new (): TopicQos;
}

interface Topic {
new (domainID: number, topicName: string): Topic;
new (domainID: number, topicName: string, tqos: TopicQos): Topic;
new (domainID: number, topicName: string, tqos: TopicQos, topicType: string): Topic;
new (domainID: number, topicName: string, tqos: TopicQos, topicType: string, typeName: string): Topic;
}

interface Runtime {
new (): Runtime;
connect(server: string, authToken: string);
disconnect();
registerTopic(topic: Topic);
}

interface runtime {
Runtime: Runtime;
}


export interface DDS {
runtime : runtime;
Topic : Topic;
VERSION: string;
}


}

declare var dds: VortexWebClient.DDS;

这可行,但在我看来应该有更好的方法使用 export 关键字。特别是应避免在底部列出 DDS 接口(interface)的所有成员(还有很多内容需要编写)。

我尝试了很多不同的方法,其中之一如下。它应该避免显式创建 dds 接口(interface),它只是一个包装器,可以这么说:

declare module DDS {

export interface TopicQos {
new (): TopicQos;
}

export interface Topic {
new (domainID: number, topicName: string): Topic;
new (domainID: number, topicName: string, tqos: TopicQos): Topic;
new (domainID: number, topicName: string, tqos: TopicQos, topicType: string): Topic;
new (domainID: number, topicName: string, tqos: TopicQos, topicType: string, typeName: string): Topic;
}

interface Runtime {
new (): Runtime;
connect(server: string, authToken: string);
disconnect();
registerTopic(topic: Topic);
}

export interface runtime {
Runtime: Runtime;
}

export var VERSION: string;

}

//Here IntelliJ complaints: "Cannot find name: DDS"
declare var dds: DDS;

创建包含多个子模块的定义文件的正确方法是什么?

最佳答案

这一行的错误:

declare var dds: DDS;

是因为DDS不是一种类型,它是一个模块。但你试图将它用作一种类型。

您可以将 DDS 重命名为 dds,这样它实际上就成为一个变量,其中包含具有您声明的内部结构的对象。

关于javascript - 带有子模块的 Typescript 定义文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30326352/

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