我使用Vue 2和Typescript,并且在types.ts
文件中声明了一个类型:
export type SetupSliderType = {
name: SetupSliderEnum;
image: HTMLImageElement;
title: keyof I18nMessages;
component: Function;
}
这不会给我带来任何错误。
在我的RegisterSetup.tsx
文件中,我声明了一个该类型的Array:
private slides: Array<SetupSliderType> = [
{
name: SetupSliderEnum.solutions,
image: <img src={solutions_logo}/>,
title: I18nMessages['account.register.side.subheading'],
component: this.renderSlideSolutions
},
]
Array块中的“image”行显示以下错误:
类型“VNode”缺少类型“HTMLimageElement”的以下属性:对齐、替换、边框、完成和其他309个.ts(2740)
类型。ts(13、3):所需类型来自此处在类型“SetupSliderType”上声明的属性“image”
对于这种语法,使用<img>
元素的正确方法是什么?我做错了什么?
1条答案
按热度按时间wvmv3b1j1#
当你使用JSX/TSX创建一个元素时,你并不是在创建一个DOM元素,而是在创建一个对象,这个对象将被Vue.js(或React或类似的)在 * 以后 * 用来创建或更新一个DOM元素。正如错误消息所告诉你的,在你的例子中对象的类型是
VNode
,所以你应该在你的类型中使用VNode
而不是HTMLInputElement
:如果您真的想创建一个
HTMLInputElement
,您可以通过document.createElement
来完成,但是当使用像Vue.js或React或类似的库时,这将是非常不寻常的。