经验1:
【@input="testVal = $event.target.value"】会有一个ts报错:【“$event.target”可能为 “null”。】
我们可以使用【@input="testVal = (<HTMLInputElement>$event.target).value"】解决ts报错
<input type="text" :value="testVal" @input="testVal = ($event.target as HTMLInputElement).value">
<input type="text" :value="testVal" @input="testVal = (<HTMLInputElement>$event.target).value">
# 补充
<input type="text" :value="testVal" @input="testVal = ($event.target as Element).value">
这样也行,将 `$event.target` 断言为 `Element`类型,因为`Element`是所有 DOM 元素的超集
使用`HTMLInputElement`作为类型断言也行,因为,`HTMLInputElement`是`Element`的一个子类型,更为具体地描述了元素的类型。
经验2:
<a-textarea @input="contentLength" placeholder="请输入备注"></a-textarea>
const contentLength = (e: Event) => {
console.log('你瞅瞅你瞅瞅=', (e.target as HTMLTextAreaElement).value)
}
@input是一个事件监听器,它监听的是 input 事件,
在 TypeScript 中,如果没有明确的类型注解,TypeScript 通常会使用 Event 类型作为事件对象的类型,
经验3:将 antDesign 的 icon 图标,全部注册为全局组件
main.ts
import * as antIcons from '@ant-design/icons-vue'
Object.keys(antIcons).forEach((key: string) => {
app.component(key, antIcons[key])
})
报错如下:
解决办法:
Object.keys(antIcons).forEach((key: string) => {
app.component(key, antIcons[key as keyof typeof antIcons])
})
首先:通过 typeof 获取 antIcons 变量的类型, 然后:通过 keyof 获取该类型的所有键。