Record<Keys, Type>类型。看vue3源码发现这个
function createBlock(
node: ElementNode,
source: string,
pad: SFCParseOptions['pad'],
): SFCBlock {
const type = node.tag
const loc = node.innerLoc!
// 这里Record<string, string | true>
const attrs: Record<string, string | true> = {}
const block: SFCBlock = {
type,
content: source.slice(loc.start.offset, loc.end.offset),
loc,
attrs,
}
if (pad) {
block.content = padContent(source, block, pad) + block.content
}
node.props.forEach(p => {
if (p.type === NodeTypes.ATTRIBUTE) {
const name = p.name
attrs[name] = p.value ? p.value.content || true : true
if (name === 'lang') {
block.lang = p.value && p.value.content
} else if (name === 'src') {
block.src = p.value && p.value.content
} else if (type === 'style') {
if (name === 'scoped') {
;(block as SFCStyleBlock).scoped = true
} else if (name === 'module') {
;(block as SFCStyleBlock).module = attrs[name]
}
} else if (type === 'script' && name === 'setup') {
;(block as SFCScriptBlock).setup = attrs.setup
}
}
})
return block
}
官方文档解释:建立一个对象类型它的属性keys是Keys,属性值是Type, 这个类型可以用来映射一个类型的属性到另一个属性。
www.typescriptlang.org/docs/handbo…