【问题标题】:Why can't I cast from any[] to MyType[] in TypeScript?为什么我不能在 TypeScript 中从 any[] 转换为 MyType[]?
【发布时间】: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


【解决方案1】:

误报。产生错误的是 Resharper,而不是实际的 Typescript 编译器。

【讨论】:

    最近更新 更多