Ответ 1
Нет, это невозможно. Такого рода ограничение по типу недоступно в typescript (еще?)
Только проверки выполнения/утверждения могут достичь этого: (
Так как typescript 2.0 RC (или даже бета?), можно использовать числовые литералы, как в type t = 1 | 2;
. Можно ли ограничить тип диапазоном чисел, например. 0-255, не выписывая 256 чисел в типе?
В моем случае библиотека принимает значения цвета для палитры с 0-255, и я бы предпочел назвать только несколько, но ограничил ее 0-255:
const enum paletteColor {
someColor = 25,
someOtherColor = 133
}
declare function libraryFunc(color: paletteColor | 0-255); //would need to use 0|1|2|...
Нет, это невозможно. Такого рода ограничение по типу недоступно в typescript (еще?)
Только проверки выполнения/утверждения могут достичь этого: (
Если у вас небольшой диапазон, вы всегда можете написать что-то вроде:
type MyRange = 5|6|7|8|9|10
let myVar:MyRange = 4; // oops, error :)
Конечно, он работает только для целых чисел и уродлив, как черт:)
Пока это невозможно, но на GitHub есть открытый вопрос. В настоящее время они все еще ждут предложения, но эта функциональность может когда-нибудь появиться.
Короче говоря, вы не сможете использовать диапазон чисел в качестве типа, пока не появится предложение.
Я предлагаю использовать что-то вроде этого:
class Cinema {
private openingHour: number;
constructor(openingHour: 5 | 6 | 7) {
this.openingHour = openingHour;
}
}
let yesPlanet = new Cinema(9);
Когда вы инициализируете yesPlanet значением "9", вы получаете ошибку, так как она выходит за пределы допустимого диапазона. Надеюсь, это поможет.