0

假设我有现有类型

interface ColDef {
   field: string;
   // some other properties
}

我想推断具有相同属性的新类型,但将字段属性重新字符串为:

field: 'ID' | 'Name' | 'SomeOtherProps'

或者

field: keyof Customer

是否可以从现有类型推断出新类型并更改一个或多个属性的类型?

4

2 回答 2

1

只需扩展基本类型并覆盖属性定义:

interface MyColDef extends ColDef {
  field: 'ID' | 'Name'
}

let myCol: MyColDef = {
  field: 'blabla' //compiler error
};
于 2019-09-18T14:15:33.353 回答
0

您可以创建自定义类型type来限制属性值。

type Field = "ID" | "Name" | "SomeOtherProps"

interface ColDef {
   field: Field;
}

在上面的代码field中只会接受"ID", "Name", "SomeOtherProps"

演示

于 2019-09-18T13:38:48.360 回答