在我的项目中,我正在导入一个对象。该对象是由一个函数创建的,因此IDE不知道其上有什么键(根据提供的配置,它们是动态的)。我的想法是,我可以生成一个.d.ts
文件来描述该对象,以便希望了解其上哪些键的人们可以在IDE中通过代码完成找到它们。
// dynamicObject.js
export default makeAnObject(config);
// useObject.js
import someObject from './dynamicObject.js';
const result = someObject.| (code editor dropdown of keys here)
另一方面,我对将.d.ts
文件与这些文件放在同一目录中的not感兴趣。我假设tsconfig.json
可以处理此问题,但我不知道.d.ts
文件的语法是什么样。 Typescript对我来说非常陌生,文档也无济于事。
对于我的dynamicObject.d.ts
文件,我从这样的东西开始
declare namespace someObject {
interface oneKey {
nestedKey: string
}
}
但是代码编辑器仍然不知道对象的组成是什么。我不确定这是写入.d.ts
文件的方式还是tsconfig.json
中缺少的方式?
EDIT:将我的tsconfig.json
作为第一个答案不起作用。希望拥有最基本的配置,但我可以想象它可能会丢失更多:
{
"compileOnSave": true,
"compilerOptions" : {
"baseUrl": "./",
"paths": {
"*" : ["myCustomTypings/**.d.ts"]
}
}
}
EDIT2我已经将.d.ts
文件临时移到了与dynamicObject.js
相同的目录中(命名为dynamicObject.d.ts
),现在IDE可以告诉它为typeof someObject
,但不能告诉对象的结构。如何在dynamicObject.d.ts
中描述对象?
需要在tsconfig.json中声明typeRoots。
下面是示例
{
"compilerOptions" : {
"typeRoots" : [ "./node_modules/@types", "./src/types"]
}