2015-06-12 5 views
0

TypeScript имеет тип any, который может быть выбран любым произвольным типом TO или FROM. Я отлит из переменного типа any переменного типа MyArbitraryType как вПочему я не могу отбрасывать из любого [] в MyType [] в TypeScript?

var myThing: MyArbitraryType; 
var anyThing: any; 
... 
myThing = anyThing;//implicit cast from 'any' to 'MyArbitraryType' 
//or 
myThing = <MyArbitraryType>anyThing;//explicit cast from 'any' to 'MyArbitraryType' 

Но я получаю сообщение об ошибке при попытке отлита из any[] к MyArbitraryType[] как в

var myThings: MyArbitraryType[]; 
var anyThings: any[]; 
... 
myThings = anyThings;//implicit cast from 'any[]' to 'MyArbitraryType[]' 
//or 
myThings = <MyArbitraryType[]>anyThings;//explicit cast from 'any[]' to 'MyArbitraryType[]' 

Однако Я могу это сделать, если я использую any как средний человек, как в

myThings = <MyArbitraryType[]><any>anyThings; 

который я мог бы просто использовать как есть, но чувствую s kinda sloppy. Есть ли причина, по которой any может быть отнесен к любому типу, но any[] не может быть отнесен к любому массиву и из любого массива? Является ли это просто надзором в TypeScript до сих пор? Или есть какой-то другой синтаксис, о котором я не знаю?

+1

Почему вы говорите, что это не работает? Согласно игровой площадке он делает: http://bit.ly/1cQDpA5 (примечание: я скопировал ваш код выше и добавил класс, определяющий MyArbitraryType) – Brocco

+0

Вы правы; кажется, что это не была собственно ошибка компиляции машинописного текста, поскольку речь идет о самом компиляторе машинописного текста, а скорее об ошибке, генерируемой только Resharper. Виноват. – Jargon

ответ

0

False alarm. Это был Resharper, а не фактический компилятор Typcript, который генерировал ошибку.