用于破坏函数负载的 TypeScript 类型声明 (d.ts)
TypeScript type declaration (d.ts) for destructing function payload
使用 WebStorm。 TypeScript v4.6.2
我在常规 JavaScript 文件 index.js
中有一个函数。在它旁边我有类型声明文件 index.d.ts
。此类型声明文件的唯一目的是获得自动完成建议。
在 JS 文件中我有一个函数:
module.exports.myFunction = async ({foo}) => {
foo. // <-- expecting to get suggestion "bar"
}
TypeScript 类型声明文件需要如何查找才能为 foo
中的 bar
提供自动完成功能?
尝试这样做:
interface payload {
foo: {
bar: string;
};
}
declare function myFunction(object: payload): any;
export default myFunction;
得到这样的“建议”:
如果我从任何其他位置需要此 myFunction
,那么我会按预期获得建议,但我想在 myFunction
本身内部获得该建议:
文件结构:
TypeScript 无法以神奇的方式工作,在您的情况下,使其工作的最佳方法是导出界面并将其导入 JSDoc 注释中,以便在函数输入中使用。所以你的文件应该是这样的:
// index.d.ts file
export interface Payload { // Interface name should be capitalized
foo: {
bar: string;
};
}
// index.js file
/**
* @typedef {import('.').Payload} Payload
*/
/**
* @param {Payload} param
*/
const myFunction = async ({ foo }) => {
foo. // <-- You will get here the suggestion for "bar"
};
module.exports = { myFunction };
使用 WebStorm。 TypeScript v4.6.2
我在常规 JavaScript 文件 index.js
中有一个函数。在它旁边我有类型声明文件 index.d.ts
。此类型声明文件的唯一目的是获得自动完成建议。
在 JS 文件中我有一个函数:
module.exports.myFunction = async ({foo}) => {
foo. // <-- expecting to get suggestion "bar"
}
TypeScript 类型声明文件需要如何查找才能为 foo
中的 bar
提供自动完成功能?
尝试这样做:
interface payload {
foo: {
bar: string;
};
}
declare function myFunction(object: payload): any;
export default myFunction;
得到这样的“建议”:
如果我从任何其他位置需要此 myFunction
,那么我会按预期获得建议,但我想在 myFunction
本身内部获得该建议:
文件结构:
TypeScript 无法以神奇的方式工作,在您的情况下,使其工作的最佳方法是导出界面并将其导入 JSDoc 注释中,以便在函数输入中使用。所以你的文件应该是这样的:
// index.d.ts file
export interface Payload { // Interface name should be capitalized
foo: {
bar: string;
};
}
// index.js file
/**
* @typedef {import('.').Payload} Payload
*/
/**
* @param {Payload} param
*/
const myFunction = async ({ foo }) => {
foo. // <-- You will get here the suggestion for "bar"
};
module.exports = { myFunction };