Vue3 源码请教
最近从 Vue3
源码中学习,不怎么自己用 TypeScript
写就有问题特来请教
在 package
其中的 runtime-dom
的 patchProp.ts
文件中引入了 @vue/runtime-core
定义的泛型 RenderOptions
在文件 render.ts
中, 并做了一个类型别名。
patchProp.ts:
import { RendererOptions } from '@vue/runtime-core'
const nativeOnRE = /^on[a-z]/
type DOMRendererOptions = RendererOptions<Node, Element>
render.ts
export interface RendererOptions<
HostNode = RendererNode,
HostElement = RendererElement
> {
patchProp(
el: HostElement,
key: string,
prevValue: any,
nextValue: any,
isSVG?: boolean,
prevChildren?: VNode<HostNode, HostElement>[],
parentComponent?: ComponentInternalInstance | null,
parentSuspense?: SuspenseBoundary | null,
unmountChildren?: UnmountChildrenFn
): void
forcePatchProp?(el: HostElement, key: string): boolean
insert(el: HostNode, parent: HostElement, anchor?: HostNode | null): void
remove(el: HostNode): void
createElement(
type: string,
isSVG?: boolean,
isCustomizedBuiltIn?: string
): HostElement
createText(text: string): HostNode
createComment(text: string): HostNode
setText(node: HostNode, text: string): void
setElementText(node: HostElement, text: string): void
parentNode(node: HostNode): HostElement | null
nextSibling(node: HostNode): HostNode | null
querySelector?(selector: string): HostElement | null
setScopeId?(el: HostElement, id: string): void
cloneNode?(node: HostNode): HostNode
insertStaticContent?(
content: string,
parent: HostElement,
anchor: HostNode | null,
isSVG: boolean
): HostElement[]
}
export interface RendererNode {
[key: string]: any
}
export interface RendererElement extends RendererNode {}
我就写了一个简易的 demo 怎么就报错呢?
interface B<HostNode=RenderNode,HostElement=RenderElement>{
patchProp(el:HostNode):void
forcePatchProp(el:HostElement):boolean
}
interface RenderNode{
[key:string]:any
}
interface RenderElement extends RenderNode
type Ac = B<Node,Element>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你忘了 interface 的大括号。