2017-03-03 22 views
8
kabul etmesini hiçbir özelliklere sahip türünü kısıtlamak

o dizeleri kabul etmemeyi param kısıtlamak mümkün mü vb diziler?typescript dizeleri veya diziler

interface foo { 
    a?: number; 
    b?: string; 
} 

function baz(param: foo) { 
} 

baz("hello"); 
+1

Neden ilgileniyorsun? Arayüzünüze uyuyorsa, neden bir ip mi, nesne mi olduğu hakkında bir fikriniz var? –

+2

Biz nesnenin yerine nesnenin özelliğini geçerken bir hata vardı ve typescript ince derlenmiş. – user3233089

+0

Geçerli bir sorun. –

cevap

5

Sen baz en az bir nesneyi kabul etmesini sağlamak için böyle bir şey yapabilirsiniz:

burada
interface foo { 
    a?: number; 
    b?: string; 
} 

interface notAnArray { 
    forEach?: void 
} 

type fooType = foo & object & notAnArray; 

function baz(param: fooType) { 
} 

baz("hello"); // Throws error 
baz([]); // Throws error 

fooType bir Intersection Type olduğunu.

+0

Bu biraz aldatıyor mu? Parametrenin bir nesne olması gerektiğini zorluyorsunuz. –

+1

@MuratK .: OP'nin istediği bu değil mi? Ama, bu bir tür yapmıyor doğru sadece 'fonksiyon Baz yalın olacaktır (param: foo & nesne)' 'Nesnesi' tipi çok yeni olduğunu belirterek değer –

+1

, bunu kullanmak typescript 2.2 gerekir. –