gpt4 book ai didi

参数中的 typescript 类型断言

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:57 25 4
gpt4 key购买 nike

到目前为止,我很喜欢 typescript ,但发现我需要做很多类型断言。例如,将 EventTarget 转换为 HTMLAnchorElement 对我来说是一个常见的用例。但是要做到这一点,我需要使用如下内容:

getTabID(eventTarget: EventTarget) : string {
// without the following variable, the compiler tells me that .hash
// is not a property of EventTarget, which according to the interface, it isn't.
// So thats fine, i'll cast it to an Element
let mEventTarget: HTMLAnchorElement = <HTMLAnchorElement>eventTarget
let mTabID: string
if(mEventTarget.hash){
mTabID = mEventTarget.hash.split('#')[1]
}
return mTabID
}

然而,这意味着如果我不希望编译器抛出错误,我需要在我的函数中创建变量来进行类型断言。我不介意额外的输入,但这些最终也会出现在 JS 中,并最终在我的 js 文件中浪费字节。

我希望能够:

getTabID(eventTarget: EventTarget) : string {
let mTabID: string
// Do the type assertion in the parameter
if(<HTMLAnchorElement> eventTarget.hash){
mTabID = mEventTarget.hash.split('#')[1]
} else {
mTabID = mEventTarget.dataset.tabId
}
return mTabID
}

我仔细查看了文档和 SO,但似乎找不到任何方法来执行此操作。有人有什么想法吗?

最佳答案

您可以通过用括号括住断言来执行内联类型断言:

if((<HTMLAnchorElement>eventTarget).hash) {

您可能还会看到如何避免需要类型断言,例如:

getTabID(eventTarget: HTMLAnchorElement) : string {
let mTabID: string;

if(eventTarget.hash){
mTabID = eventTarget.hash.split('#')[1]
}

return mTabID
}

最后,当您在其中一个示例中混合使用 EventTargeteventTarget 时,请注意外壳。

关于参数中的 typescript 类型断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44405119/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com