Typescript 铅字的铸造与结构打字的关系
这是一个关于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,它没有我们想要的属性 我
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
不应该通过类型检查。哪里你能做一个演示来说明你在说什么吗?就目前的情况来看,这个
似乎没有提到任何东西。