编译器在无法将只读元组转换为可变数组时,应尽量使用可变版本的只读元组,主要是为了 as const
的可用性。这种性能影响较小,因为运行此检查的条件有限。
TypeScript 版本: 3.7.x-dev.20200123
搜索词:
代码:
([0] as [0]) as number[];
([0] as [0]) as readonly number[];
// As the expansion of [0] as const
([0] as readonly [0]) as number[]; // error
([0] as readonly [0]) as readonly number[];
预期行为:
通过
实际行为:
Conversion of type 'readonly [0]' to type 'number[]' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first.
The type 'readonly [0]' is 'readonly' and cannot be assigned to the mutable type 'number[]'.(2352)
** playground 链接:**http://www.typescriptlang.org/play/index.html?target=99&ts=3.8.0-dev.20200123&ssl=1&ssc=1&pln=6&pc=1#code/BQbQDAugBAhgzlcECUsEDsCuBbARgUwCcQIBuAKFEjUUlXikPxgBMB7dAGwE8os8iJCgHphUAIIIALgAt8UfAA8ADjHRwAlhyhsAZrWgMAxhzhTKSGk1YceB+hhwFiZKKIWFCbQheoNr7Fy8SA6MzIF2-M5C5EA
相关问题:
1条答案
按热度按时间8i9zcol21#
直觉上,这些类型似乎有足够的重叠,因此这应该是一个允许的转换,尤其是考虑到允许的内容: