Typescript 铅字的铸造与结构打字的关系

Typescript 铅字的铸造与结构打字的关系,typescript,structural-typing,Typescript,Structural Typing,这是一个关于Typescript中结构类型的问题 例子 玩具示例如下所示: const onChange1 = (e: Event) => { this.x = (e.target as HTMLElement).innerText } const onChange2 = (e: {target: HTMLElement}) => { this.x = e.target.innerText } 据我所知: Event有target:EventTarget,它没有我们想要的属性 我

这是一个关于Typescript中结构类型的问题

例子 玩具示例如下所示:

const onChange1 = (e: Event) => { this.x = (e.target as HTMLElement).innerText }

const onChange2 = (e: {target: HTMLElement}) => { this.x = e.target.innerText }
据我所知:
Event
target:EventTarget
,它没有我们想要的属性

我们知道我们正在处理元素

因此,在
onChange1
中,我们使用
as
将其转换为
HTMLElement
类型

onChange2
中,它有
{target:HTMLElement}
内联类型,使用它意味着它只接受具有
target:HTMLElement
的值


问题: 我们必须进行类型转换才能使onChange1工作,而在案例2中,我们只需声明所需的类型而不进行转换

我很困惑--
onChange2
不应该通过类型检查。
这在同样具有结构类型的Scala中是不可能的。

Typescript
不是类型安全语言吗?

onChange1
onChange2
有不同的类型。我不知道你为什么认为
onChange2
不应该通过类型检查。哪里你能做一个演示来说明你在说什么吗?就目前情况而言,
这个
似乎没有提及任何东西。
onChange1
onChange2
有不同的类型。我不知道你为什么认为
onChange2
不应该通过类型检查。哪里你能做一个演示来说明你在说什么吗?就目前的情况来看,
这个
似乎没有提到任何东西。