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の未解決の問題 があります。現在、彼らはまだ提案を待っていますが、この機能はいつか来るかもしれません。
要するに、プロポーザルが出るまで、数値の範囲をタイプとして使用することはできません。