如何使用 JSDoc 记录符号索引签名以符合打字稿?
Posted
技术标签:
【中文标题】如何使用 JSDoc 记录符号索引签名以符合打字稿?【英文标题】:How to document symbol index signature using JSDoc to be typescript compliant? 【发布时间】:2018-11-27 07:48:59 【问题描述】:我使用纯 javascript 创建一个类并使用 JSDoc 记录它,我使用 typescript 进行类型检查。
但我不知道如何正确编写 JSDoc,以便它可以使用符号识别字段访问。
const secret = Symbol('secret');
class MyClass
constructor()
/** @type Map<string,number> */
this[secret] = new Map();
method()
const map = this[secret];
// Should give an error in the following line since 1 is not a string
map.set(1, '2');
我从 VSCode 得到的结果如下(你可以看到 map 的类型为 any
):
在 TypeScript 中很容易让它工作,只需像任何其他类属性一样声明它。
const secret = Symbol('secret');
class MyClass
[secret]: Map<string, number>; // Declared here
constructor()
this[secret] = new Map();
method()
const map = this[secret];
map.set(1, '2');
我得到的 VSCode(打字稿)错误:
【问题讨论】:
【参考方案1】:您将secret
签名为Map<string, number>;
,因此secret
MUST
的第一个参数为string
,第二个参数为number
。
正确的例子是
map.set('2',1)
【讨论】:
我在tsconfig
文件中启用了 Javascript 检查。另外我的问题是关于 TypeScript 没有将 map.set(1, '2');
识别为错误而不是关于 typescript 不起作用。以上是关于如何使用 JSDoc 记录符号索引签名以符合打字稿?的主要内容,如果未能解决你的问题,请参考以下文章