打字稿:打字的接口不允许从其类型字符串中输入值

时间:2020-04-01 19:46:06

标签: typescript generics

我已经创建了按比例缩小版本的问题。

该类必须初始化其“状态”属性的默认值。它是T型,可扩展由3种可能的字符串组成的乱抛垃圾类型“ PossibleStatus”。

Typescript不接受。你能帮我找出原因吗?

A stackblitz to see it live

export type PossibleStatuses = 'idle' | 'on' | 'off';

export class StatefulNode<T extends PossibleStatuses> {

  private status: T = 'idle';

  constructor() { }

}

1 个答案:

答案 0 :(得分:1)

以下代码演示了为什么无法启动状态(type X = 'on'扩展了PossibleStatuses但不包括'idle'):

export type PossibleStatuses = 'idle' | 'on' | 'off';

export class StatefulNode<T extends PossibleStatuses> {
  // Error
  private status: T = 'idle';
}

// Because
const unsafe = new StatefulNode<'on'>();