![](/img/trans.png)
[英]How to declare type for function with properties in TypeScript?
[英]Typescript: How to declare the type for a function with custom properties that is returned from an IIFE
說我有一個這樣的對象
const someObject: SomeObject = {
someMethod: (function() {
function mainMethod(x) {return x+1}
yolo.subMethod = function(x) { return x-1 }
return mainMethod;
})()
}
我嘗試像這樣定義它的類型:
type SomeObject = {
someMethod: {
(x:number): number
subMethod(x:number): number
}
}
但是我得到Parameter 'x' implicitly has an 'any' type.
IIFE 中所有內容中的警告,這意味着我的類型未應用。
我已經閱讀了這個類似的答案,但它似乎不起作用。
我對 TS 很陌生,我還不熟悉諸如此類的更復雜的用例,因此非常感謝任何幫助。
上下文類型(其中 TS 根據預期類型推斷參數類型)有其局限性。 其中之一是必須將函數直接分配給類型化引用。 由於mainMethod
在聲明時未在任何地方直接分配,因此不會從上下文類型中受益。 它將在return
檢查,但不會根據上下文鍵入。
您必須向函數顯式聲明參數類型。 如果你想讓事情保持干燥,你可以定義與推斷的常量類型相關的類型:
const someObject = {
someMethod: (function () {
function mainMethod(x: number) { return x + 1 }
mainMethod.subMethod = function (x: number) { return x - 1 }
return mainMethod;
})()
}
type SomeObject = typeof someObject
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.