const promise = new Promise((resolve) => {
resolve('string');
});
"promise“变量的类型应该是Promise<any>
,而它应该是Promise<string>
。我能让它自动识别resolve()中放入的内容吗?我可以在docblock中手动描述类型,但是resolve()中有一个相当复杂的对象,我只是希望它使用自动生成的文档。
发布于 2020-11-06 19:43:48
我不认为你需要自动找出你投入到解决方案中的东西,如果你没有一个帮手围绕着那个承诺。
您可以创建自己的“类型”,并将它们传递给Promise,如下所示:D
/**
* @typedef {{name: "John", lastName: "Doe", age: "infinite"}} MyComplicatedObject
* @type {Promise<MyComplicatedObject>}
*/
const promise = new Promise(resolve => {
resolve({ name: 'John', lastName: 'Doe', age: 'infinite' });
});
您不需要重新输入它们,也可以在jsdoc注释中从其他文件中import
它们,就像从js导入任何其他文件一样。
如果您希望自动检测resolve将解决的问题,您可以为该promise提供一个助手:
/**
* @template resT
* @param {resT} whatToResolve
* @returns {Promise<resT>}
*/
const myPromise = whatToResolve => {
return new Promise(resolve => {
resolve(whatToResolve);
});
};
https://stackoverflow.com/questions/64699377
复制相似问题