为打字稿.d.ts文件描述嵌套对象

问题描述 投票:0回答:1

在我的项目中,我正在导入一个对象。该对象是由一个函数创建的,因此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中描述对象?

javascript typescript namespaces declare .d.ts
1个回答
0
投票

需要在tsconfig.json中声明typeRoots。

下面是示例

{
  "compilerOptions" : {
    "typeRoots" : [ "./node_modules/@types", "./src/types"]
}
© www.soinside.com 2019 - 2024. All rights reserved.