[英]How to use a TypeScript definition file for another function
我是 TS 新手,想使用我創建的定義文件來告訴單獨的 function 它是 arguments 類型。
函數.ts
export default ({}) => {
const myFunction = ({ param1 }: { param1: string }) => {
return param1;
};
return {
myFunction
};
};
函數.d.ts
declare var _default: ({}: {}) => {
myFunction: ({ param1 }: {
param1: string;
}) => string;
};
export default _default;
其他文件.ts
export default ({ functions }) => {
functions().myFunction({ param1: 1 });
};
functions
參數來自上面的functions.ts,但是someotherfile.ts當然不知道functions
的結構是什么。
我怎樣才能在這里使用functions.d.ts? 我什至需要使用它嗎?
我認為這將解決您的問題,如果您只需要它,只需創建一個新類型。
// functionsType.ts
export type functions = ({}: {}) => {
myFunction: ({ param1 }: {
param1: string;
}) => string;
};
並像這樣使用它
//someotherfile.ts
import { functions } from './functionsType';
export default (functions: functions) => {
functions({}).myFunction({ param1: 1 });
};
這是stackBlitz示例,您可以在其中看到有關錯誤參數類型的錯誤
它不是那樣工作的。
您使用定義為您可能導入的無類型 javascript代碼提供類型。 例如,假設您確實將庫X
導入到您的項目中,但它沒有@types/X
package。 然后您可以編寫一個.d.ts
文件將其集成到您的項目中。 但這完全是可選的,您也可以按原樣使用 JS 代碼,無需類型。
如果您希望 function 的返回依賴於它的 arguments,那么您可能正在尋找的是generics ,這可能是一個有點復雜的話題。 例如:
const myFunction = <Input extends { param1: any }>(inp: Input) => {
return inp.param1
};
在前面的摘錄中,我們告訴 myFunction 接受任何 object 至少具有名為 param1 的屬性。 它的返回值將被推斷為 param1 具有的任何類型。 這與寫作不同:
const myFunction = (inp: { param1: any, [k: string]: any }) => {
return inp.param1
};
最后一個示例對 function 輸入施加了類似的約束,但返回類型將始終擦除為any
。
不同之處在於,在第二個示例中,我們“強制轉換”輸入類型,而在第一個示例中,我們通常在施加約束時使用進入的任何類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.