gpt4 book ai didi

javascript - Typescript:如何声明具有从 IIFE 返回的自定义属性的函数的类型

转载 作者:行者123 更新时间:2023-12-02 21:47:10 27 4
gpt4 key购买 nike

假设我有一个这样的对象

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

但是我在 IIFE 内的所有内容中收到参数“x”隐式具有“any”类型。警告,这意味着我的类型未应用。

我已经读过this类似的答案,但它似乎不起作用。

我对 TS 还很陌生,而且我还不熟悉像这样的更复杂的用例,因此我们将不胜感激。

最佳答案

上下文类型(TS 根据预期类型推断参数类型)有其局限性。其中之一是函数必须直接分配给类型化引用。由于 mainMethod 在声明时没有直接分配到任何地方,因此不会从上下文类型中受益。它将在返回中进行检查,但不会根据上下文键入。

您必须向函数显式声明参数类型。如果您想让事情保持干燥,您可以定义与推断的常量类型相关的类型:

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

Playground Link

关于javascript - Typescript:如何声明具有从 IIFE 返回的自定义属性的函数的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60226539/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com