有没有办法直接使类型化的对象文字?
直接地,我的意思是不必将其分配给带有类型注释的变量。
例如,我知道我可以这样做:
export interface BaseInfo { value: number; }
export interface MyInfo extends BaseInfo { name: string; }
function testA(): BaseInfo = {
const result: MyInfo = { value: 1, name: 'Hey!' };
return result;
}
我也可以这样:
function testB(): BaseInfo = {
return { value: 1, name: 'Hey!' };
}
但是我需要的是这样的:
function testC(): BaseInfo = {
return { value: 1, name: 'Hey!' }: MyInfo; // <--- doesn't work
}
或像这样:
function testD(): BaseInfo = {
return MyInfo: { value: 1, name: 'Hey!' }; // <--- doesn't work
}
答案是使用身份功能:
function to<T>(value: T): T { return value; }
const instance = to<MyInfo>({
value: 1,
name: 'Hey!',
});
to
JIT编译器将优化该函数,因此调用函数不会对性能造成影响
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句