gpt4 book ai didi

node.js - 具有导出类和模块的继承 TypeScript

转载 作者:搜寻专家 更新时间:2023-10-30 20:56:42 24 4
gpt4 key购买 nike

我对使用 typescript 的继承感到疯狂。我不知道为什么,但它无法解析我要继承的类。

lib/classes/Message.class.ts

///<reference path='./def/lib.d.ts'/>
///<reference path='./def/node.d.ts'/>

export module SharedCommunication {
export class Message{
// Stuff
}
}

lib/classes/ValidatorMessage.class.ts

///<reference path='./def/lib.d.ts'/>
///<reference path='./def/node.d.ts'/>
///<reference path='Message.class.ts'/>

export module SharedCommunication {
export class ValidatorMessage extends Message{
private _errors;
}
}

消息无法解析。我也尝试过 SharedCommunication.Message 但它是一样的。我引用了这个类(class),所以我根本不明白发生了什么。你有什么想法吗?

我试过没有模块(两个类没有在任何模块中)但它是一样的。我需要导出类(以及模块,如果我使用它)以从另一个 node_module: typescript.api 获取它们,我用它来加载类并在 Node 中使用它。

lib/message.js

var Message = require('./classes/Message.class.ts');

module.exports = Message.SharedCommunication.Message;

这里有什么技巧?因为我在使用继承的不同文件夹中有同一个项目的源代码,没有模块或导出。谢谢。

最佳答案

ValidatorMessage.class.ts 应该是这样的:

///<reference path='./def/lib.d.ts'/>
///<reference path='./def/node.d.ts'/>

import message = require('./Message.class');

export module SharedCommunication {
export class ValidatorMessage extends message.SharedCommunication.Message {
private _errors;
}
}

在文件的顶层有一个export module通常是多余的,因为无论如何文件本身构成了一个命名空间。

Bill 在你的另一个问题中提到了这一点,但如果你刚开始使用 TypeScript,我再次提醒你不要使用 RequireTS - 它听起来很不成熟,可能会引起很多困惑。

关于node.js - 具有导出类和模块的继承 TypeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20228924/

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