TypeScript - 定义类型的子集

时间:2017-06-21 08:50:34

标签: javascript node.js typescript typescript2.0

说我有这样的类型:

interface IAll {
  foo: boolean,
  bar: Function,
  baz: number
}

而不是手动定义IAll的所有可能的子类型,如下所示:

interface IAll1 {
  foo: boolean,
  bar: Function,
}

interface IAll2 {
  bar: Function,
  baz: number
}

interface IAll3 {
  foo: boolean,
}

interface IAll4 {
  foo: boolean,
}

...等

然后做

type IAll = IAll1 | IAll2 | IAll3 ... etc.

TypeScript是否有办法静态检查对象是否是另一个的子类型或子集?

这对于我们将多个子类型或子集组合成一个完整类型的情况非常有用。

1 个答案:

答案 0 :(得分:10)

您可以使用Partial<T>。这将使IAll中的所有属性成为可选:

type SubsetOfIAll = Partial<IAll>;