【发布时间】:2026-01-06 05:40:01
【问题描述】:
TypeScript 有一个 any 类型,可以将任意类型转换为 TO 或 FROM。我可以将any 类型的变量转换为MyArbitraryType 类型的变量,如
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 作为中间人,就像 in 一样,我可以做到
myThings = <MyArbitraryType[]><any>anyThings;
我可以按原样使用,但感觉有点草率。 any 可以与任何类型相互转换,但 any[] 不能与任何数组相互转换,这是有原因的吗?到目前为止,这只是 TypeScript 中的一个疏忽吗?还是有一些我不知道的其他语法?
【问题讨论】:
-
为什么说这行不通?根据操场上的说法:bit.ly/1cQDpA5(注意:我复制了上面的代码并添加了一个定义 MyArbitraryType 的类)
-
你是对的;就实际的打字稿编译器而言,它似乎实际上并不是打字稿编译错误,而是仅由 Resharper 生成的错误。我的错。
标签: arrays casting typescript any