例如,如果我在应用中有以下内容,
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'
当我需要做您要尝试的事情时,我创建了一个externals.d.ts
文件,其中我将模块增强为我的项目,并确保我的tsconfig.json
包含在汇编中。
在您的情况下,增强可能看起来像这样:
declare module "infamous/motor/Node" {
class Node {
// Whatever you need here...
}
export default Node;
}
我将其放在单独的文件中,因为这样的模块必须是全局的(必须是 exter 任何模块),并且一个包含一个顶级import
或export
的文件是一个模块。(请参阅Typescript贡献者的这一评论。)