【发布时间】:2018-05-31 16:35:50
【问题描述】:
我有以下 javascript 对象
venue = {
id: 0,
name: '',
venueimage_set: [
{
imageurl: '',
},
]...
然后在我的代码中更改对象:
this.venue.venueimage_set[+image] = this.venue.venueimage_set[+image].imageurl;
为了使图像查看器工作,我只需要图像的 url,而不是图像 url 所属的键。因此,我将键中的内容设置为键值,即图像 url。
然后我会听到这种声音。
ERROR in mainroot/venuepage/venuepage.component.ts(171,25): error TS2322: Type 'string' is not assignable to type '{ imageurl: string; }'.
mainroot/venuepage/venuepage.component.ts(175,127): error TS2339: Property 'imageurl' does not exist on type 'string'.
我希望打字稿忽略打字,让我这样做。我会怎么做?
【问题讨论】:
-
如果你在做一些非常奇怪的类型混合,你为什么还要使用打字稿?
for a image viewer to work可能会有一种更优雅的方式来确保类型安全。 -
@JonasW。因为我希望我的幻灯片插件能够工作,而且我使用的是打字稿,因为 Angular 使用打字稿,而且我讨厌 javascript。即使在 Java 中,如果我必须在这些奇怪的用例中使用我认为合适的类型,我也可以操作和转换类型
-
在表达式后面加上
as any。 -
@JonasW。很可能是这样,但我不会让我的业务推迟,同时我会为如此琐碎的事情制定一个更优雅的解决方案。只是希望它工作并继续前进。
-
编写不安全的代码可能“现在”可以工作,但它可能会在某个时候停止工作,然后你就会遇到麻烦。
标签: javascript angular typescript casting typescript-typings