Другими словами:
Как бы вы набрали свойство windowState
DOM в 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
- это постоянное выражение.
enum
(хотя местами необходимо преобразовать в / из String) - person Thilo   schedule 25.11.2015enum
не совсем удовлетворительный - person ᆼᆺᆼ   schedule 25.11.2015lib.es6.d.ts
, либо реплицировать интерфейс Symbol. - person Kitson   schedule 25.11.2015Symbol
s? - person ᆼᆺᆼ   schedule 25.11.2015