2016-09-14 26 views
10

ile sınırlamak mümkün müdür 2.0'dan beri RC (veya hatta beta?), type t = 1 | 2;'da olduğu gibi sayı değişmez türlerini kullanmak mümkündür. Bir türün bir sayı aralığına kısıtlanması mümkün olabilir, ör. 0-255, yazı tipinde 256 sayı yazılmadan mı? Benim durumumdaNumarayı belirli bir aralıkta

, kütüphane 0-255 arası bir paleti için renk değerleri kabul ve sadece birkaç isim tercih ama 0-255 bunu kısıtlamak istiyorum:

const enum paletteColor { 
    someColor = 25, 
    someOtherColor = 133 
} 
declare function libraryFunc(color: paletteColor | 0-255); //would need to use 0|1|2|... 
+1

Not: enums, yeni bir tür değil, bir dizi ** sayısal ** sabiti tanımlar. PaletteColor'un yerine sayıların geçilebileceğini bildirmek gereksizdir. –

+1

@Burt_Harris true. Enumun 0-255 ile sınırlandırılmasının bir yolu da gerekli olacaktır. Aynı zamanda biraz çirkin olmasına rağmen, sadece bir dizin yerine bir dizinleyici nesne kullanabilirsiniz. Her iki şekilde de gerekli değildir, en iyi senaryoda sadece 0-255 veya sadece 0-255 ile sınırlı olsa bile paletteColor olmalıdır. – ASDFGerte

+1

Not: TS 2.4'ten itibaren, dize değişmezleri şimdi enum değerleri olarak izin verilir https://blogs.msdn.microsoft.com/typescript/2017/06/27/announcing-typescript-2-4/#string-enums –

cevap

5

Hayır bu mümkün değil . Kesin tip kısıtlaması Bu tür (henüz?) daktilo kullanılamaz

Sadece çalışma zamanı kontrolleri/iddialar Sen küçük aralık varsa

15

, her zaman gibi bir şey yazabilirsiniz :(o elde edebilirsiniz:

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

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

Elbette sadece tamsayılar için çalışıyor ve çirkindir (cehennem gibi) :)

+0

https : //stackoverflow.com/questions/39494689/is-it-possible-to-restrict-number-to-a-certain-range#comment79287008_39494689 –

İlgili konular