如何在TypeScript中指定类型化的对象文字?

Trident D'Gao

有没有办法直接使类型化的对象文字?

直接地,我的意思是不必将其分配给带有类型注释的变量。

例如,我知道我可以这样做:

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
}
Trident D'Gao

答案是使用身份功能:

function to<T>(value: T): T { return value; }
const instance = to<MyInfo>({
    value: 1,
    name: 'Hey!',
});

toJIT编译器将优化函数,因此调用函数不会对性能造成影响

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在TypeScript中指定定义为对象文字的箭头函数的类型?

在Typescript中的对象文字中指定值的类型?

如何在TypeScript中指定任何可更新的类型?

如何在等待中指定 Typescript Mongoose 模型类型

如何在Typescript中指定由字段索引的对象数组?

如何在类型化的球拍中指定void函数?

如何在容器中指定模板化别名的通用类型

如何在复合类型文字中指定 PostGIS 地理值?

如何在guice中指定对象实例化顺序?

如何在 TypeScript 的函数声明中指定带有伞形类型缩小的返回类型?

如何在PHP中指定类型?

如何在Lambda中指定参数类型?

如何在CSV中指定关系类型?

如何在字典中指定键值对的类型

如何在Groovy中指定字符文字?

如何在Java中指定字节文字?

如何在 Typescript 中指定代表 2 个函数的并集的类型

如何在Flow类型中指定一个空对象?

如何在 Typescript 中指定对象上允许的键/值组合

如何在TypeScript接口中指定包含多个对象的数组?

如何在YamlDotNet中指定序列化自定义类型?

Json.Net-如何在歧义JSON中指定反序列化类型

如何在类型提示中指定函数类型?

如何使用Mantle在NSArray中指定子对象类型

如何在父类中指定类型时使Jackson类中没有类型属性的子类反序列化

如何在Django中指定索引类型?(btree与哈希等)

如何在keyof声明中指定值的类型?

如何在Django Command中指定Array类型的参数?

如何在Rust中指定Some参数的类型?