繁体   English   中英

当我在 Typescript 中传递给函数时,如何返回相同的类型?

[英]How can I return the same type as I pass into a function in Typescript?

我有一个函数,我希望能够将一个类传递给它并让它返回与该类相同的类型。

目前,我发现的最好方法是这样的:

protected modClass<CLASS_TYPE>(modMe: CLASS_TYPE): CLASS_TYPE {
    console.log(modMe);
    return modMe;
}
const modded = modClass<SomeClass>(new SomeClass());

以上并不可怕,它确实有效,但它并没有真正返回传递给函数的类的类型,而是预定义了它并拒绝采用任何其他类类型。

我希望能够做的(例如)是这样的:

const modded = modClass(new SomeClass());
console.log(typeof modded); // SomeClass;

无论如何,是否可以创建一个函数,该函数返回 TypeScript 中其中一个参数的类型?

编辑:我应该提一下,我不只是想让类型正确,而是要检查。 我可以让 modClass 函数返回类型 any 并且typeof是正确的。 它只是没有任何真正的类型检查。

typeof是在表达式中使用时的 Javascript 运算符,它将按照预期返回类的object

至于您的函数,编译器将正确推断泛型参数,您无需明确指定它。 (更改名称以符合约定,但无论如何它都应该工作)

class SomeClass{
  bar(){}
}
function modClass<T>(modMe: T): T {
    console.log(modMe);
    return modMe;
}
const modded = modClass(new SomeClass()) // modded is SomeClass

modded.bar()

游乐场链接

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM