简体   繁体   English

Typescript 类型为 object 字面量

[英]Typescript type to object literal

type SelectData = {
  name?: boolean;
  address?: boolean;
}

const selectData: SelectData = {
  name: true
}

const untypedSelectData = {
  name: true
}

I want typescript to throw an error if I try to do something like this:如果我尝试执行以下操作,我希望 typescript 抛出错误:

const selectData: SelectData = {
  age: true
}

But I also want the type of selectData to be the same as untypedSelectData (ie {name: boolean})?但我也希望 selectData 的类型与 untypedSelectData 相同(即 {name: boolean})?

If you want a compile-time check that an object is assignable to some weaker type, while also retaining a stronger inferred type for the variable or constant it's assigned to, you can use a generic identity function.如果您想在编译时检查 object 是否可分配给某些较弱的类型,同时还为分配给它的变量或常量保留更强的推断类型,您可以使用通用标识 function。

function checkData<T extends SelectData>(data: T): T {
  return data;
}

// type is { name: true }
const selectData = checkData({
  name: true
})

// error: object literal may only specify known properties
const errorData = checkData({
  age: 23
})

Playground Link 游乐场链接

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

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