gpt4 book ai didi

javascript - 在 TypeScript 中引用推断类型

转载 作者:搜寻专家 更新时间:2023-10-30 20:53:28 24 4
gpt4 key购买 nike

有什么方法可以在 TypeScript 中引用推断类型吗?

在下面的示例中,我们得到了不错的推断类型。

function Test() {
return {hello:"world"}
}

var test = Test()
test.hello // works
test.bob // 'bob' doesn't exist on inferred type

但是,如果我想定义一个接受类型参数的函数:“无论 Test 返回什么”,而不显式定义接口(interface)怎么办?

function Thing(test:???) {
test.hello // works
test.bob // I want this to fail
}

这是一种解决方法,但如果 Test 有自己的参数,它就会变得很棘手。

function Thing(test = Test()) {} // thanks default parameter!

是否有某种方法可以引用任何 Test 返回的推断类型?所以我可以在不创建界面的情况下键入“无论测试返回什么”的内容?

我关心的原因是因为我通常使用闭包/模块模式而不是类。 Typescript 已经允许您将某些内容作为一个类来键入,即使您可以创建一个描述该类的接口(interface)。我想键入一些函数返回的内容而不是类。参见 Closures in Typescript (Dependency Injection)有关原因的更多信息。

解决这个问题的最佳方法是,如果 TypeScript 添加了定义模块的能力,这些模块将它们的依赖项作为参数,或者在闭包中定义模块。然后我可以只使用漂亮的 export 语法。有人知道是否有这方面的计划吗?

最佳答案

现在可以:

function Test() {
return { hello: "world" }
}

function Thing(test: ReturnType<typeof Test>) {
test.hello // works
test.bob // fails
}

https://www.typescriptlang.org/docs/handbook/advanced-types.html#type-inference-in-conditional-types

关于javascript - 在 TypeScript 中引用推断类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13769659/

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