Seit typescript 2.0 RC (oder sogar beta?) Ist es möglich, Zahlenliterale Typen zu verwenden, wie in type t = 1 | 2;
. Ist es möglich, einen Typ auf einen Nummernbereich zu beschränken, z. 0-255, ohne 256 Zahlen im Typ zu schreiben?Ist es möglich, die Anzahl auf einen bestimmten Bereich zu beschränken?
In meinem Fall übernimmt eine Bibliothek Farbwerte für eine Palette von 0-255, und ich würde es vorziehen, nur ein paar zu nennen, aber beschränken sie 0-255:
const enum paletteColor {
someColor = 25,
someOtherColor = 133
}
declare function libraryFunc(color: paletteColor | 0-255); //would need to use 0|1|2|...
Hinweis: enums definieren eine Menge von benannten ** numerischen ** Konstanten, kein neuer Typ. Daher ist es überflüssig zu deklarieren, dass Zahlen anstelle von 'paletteColor' übergeben werden können. –
@Burt_Harris wahr. Eine Möglichkeit, eine Aufzählung auf 0-255 zu beschränken, wäre ebenfalls erforderlich. Man könnte auch ein Indexer-Objekt anstelle eines Enums verwenden, obwohl es etwas hässlich ist. Das '' 'wird nicht benötigt, es sollte im besten Fall einfach' paletteColor' sein, wenn es auf 0-255 oder nur 0-255 beschränkt ist. – ASDFGerte
Hinweis: Ab TS 2.4 sind String-Literale jetzt als Enum-Werte zulässig https://blogs.msdn.microsoft.com/typescript/2017/06/27/announcing-typescript-2-4/#string-enums –