Подтвердить что ты не робот

Можно ли ограничить число определенным диапазоном

Так как 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|...
4b9b3361

Ответ 1

Нет, это невозможно. Такого рода ограничение по типу недоступно в typescript (еще?)

Только проверки выполнения/утверждения могут достичь этого: (

Ответ 2

Если у вас небольшой диапазон, вы всегда можете написать что-то вроде:

type MyRange = 5|6|7|8|9|10

let myVar:MyRange = 4; // oops, error :)

Конечно, он работает только для целых чисел и уродлив, как черт:)

Ответ 3

Пока это невозможно, но на GitHub есть открытый вопрос. В настоящее время они все еще ждут предложения, но эта функциональность может когда-нибудь появиться.

Короче говоря, вы не сможете использовать диапазон чисел в качестве типа, пока не появится предложение.

Ответ 4

Я предлагаю использовать что-то вроде этого:

class Cinema {

private openingHour: number;

constructor(openingHour: 5 | 6 | 7) {

    this.openingHour = openingHour;

}

}

let yesPlanet = new Cinema(9);

Когда вы инициализируете yesPlanet значением "9", вы получаете ошибку, так как она выходит за пределы допустимого диапазона. Надеюсь, это поможет.