我有一个函数,希望能够将一个类传递给它,并使其返回与该类相同的类型。
目前,我发现的最好方法如下:
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
是正确的。只是没有任何实际类型检查。
答案 0 :(得分:1)
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()