Алгебраические типы данных в TypeScript

Другой вариант: :

Как бы вы напечатали свойство DOM windowState в TypeScript?

РЕШЕНО (в TypeScript 2):

declare var windowState: WindowState
const enum WindowState {
  STATE_MAXIMIZED = 1,
  STATE_MINIMIZED = 2,
  STATE_NORMAL = 3,
  STATE_FULLSCREEN = 4
}
...
var windowState = 5 // Type Error, as expected!

Оригинальный вопрос :

Как мне declare создать type в TypeScript, чтобы он описывал алгебраический тип данных? Целью этого является описание существующего API.

Когда я пытаюсь сделать следующее, TypeScript явно жалуется на то, что type is expected :

type Weather = 'sunny' | 'bad'

Одна из моих идей заключалась в использовании JavaScript 2015 Symbol, однако TypeScript не ' Кажется, я не знаю об этом.

Другая идея заключалась в использовании enum, однако TypeScript жалуется, что member initializer must be constant expression :

const enum Weather {
  sunny = 'sunny',
  bad = 'bad',
  windy = Symbol('windy')
}

я бы подумал, что константа string является константой выражение.

9
задан ᆼᆺᆼ 9 January 2017 в 23:02
поделиться