簡體   English   中英

TypeScript 用於破壞 function 有效負載的類型聲明 (d.ts)

[英]TypeScript type declaration (d.ts) for destructing function payload

使用網絡風暴。 TypeScript v4.6.2

我在常規 JavaScript 文件index.js中有一個 function 。 在它旁邊我有類型聲明文件index.d.ts 此類型聲明文件的唯一目的是獲得自動完成建議。

在 JS 文件中我有一個 function:

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 注釋中,以便在 function 鍵入中使用。 所以你的文件應該是這樣的:

// 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 };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM