例如,如果我的应用中有以下内容,
import Node from 'infamous/motor/Node'
console.log(Node)
效果很好。但是,当我真正用它做点什么的时候,
import Node from 'infamous/motor/Node'
console.log(new Node)
然后TypeScript会抱怨,因为Node
没有类型定义。如何定义节点类型?
该库没有自己的类型声明。我试过像
这样的东西import MotorNode from 'infamous/motor/Node'
declare class MotorNode {}
console.log(' --- ', new MotorNode)
但我收到了错误
./src/app.tsx(6,8): error TS2440: Import declaration conflicts with local declaration of 'MotorNode'
答案 0 :(得分:2)
当我需要做你想做的事情时,我创建了一个externals.d.ts
文件,我在其中为我的项目添加了模块扩充,并确保我的tsconfig.json
将其包含在编译中。
在你的情况下,增强可能看起来像这样:
declare module "infamous/motor/Node" {
class Node {
// Whatever you need here...
}
export default Node;
}
我将它放在一个单独的文件中,因为像这样的模块扩充必须是全局的(必须在之外的任何模块),以及包含顶级import
或export
是一个模块。 (请参阅TypeScript参与者的this comment。)