工具类型
信息
本页仅列出了一些可能需要解释其使用的常见工具类型。有关导出类型的完整列表,请参阅 源代码。
PropType
在运行时属性声明时用于注解更高级的类型。
示例
tsimport type { PropType } from 'vue' interface Book { title: string author: string year: number } export default { props: { book: { // provide more specific type to `Object` type: Object as PropType<Book>, required: true } } }
另请参阅 指南 - 组件属性类型化
MaybeRef
- 仅支持 3.3+
T | Ref
的别名。用于注解 可组合函数 的参数。
MaybeRefOrGetter
- 仅支持 3.3+
T | Ref
的别名。用于注解 可组合函数 的参数。
ExtractPropTypes
从运行时属性选项对象中提取属性类型。提取的类型是内部面向的 - 即组件接收到的解析后的属性。这意味着布尔属性和具有默认值的属性始终定义,即使它们不是必需的。
要提取公共面向的属性,即父组件允许传递的属性,请使用 ExtractPublicPropTypes
。
示例
tsconst propsOptions = { foo: String, bar: Boolean, baz: { type: Number, required: true }, qux: { type: Number, default: 1 } } as const type Props = ExtractPropTypes<typeof propsOptions> // { // foo?: string, // bar: boolean, // baz: number, // qux: number // }
ExtractPublicPropTypes
- 仅支持 3.3+
从运行时属性选项对象中提取属性类型。提取的类型是公共面向的 - 即父组件允许传递的属性。
示例
tsconst propsOptions = { foo: String, bar: Boolean, baz: { type: Number, required: true }, qux: { type: Number, default: 1 } } as const type Props = ExtractPublicPropTypes<typeof propsOptions> // { // foo?: string, // bar?: boolean, // baz: number, // qux?: number // }
ComponentCustomProperties
用于增强组件实例类型,以支持自定义全局属性。
示例
tsimport axios from 'axios' declare module 'vue' { interface ComponentCustomProperties { $http: typeof axios $translate: (key: string) => string } }
提示
增强必须放在模块
.ts
或.d.ts
文件中。有关详细信息,请参阅Type Augmentation Placement。另请参阅 指南 - 增强全局属性
ComponentCustomOptions
用于增强组件选项类型,以支持自定义选项。
示例
tsimport { Route } from 'vue-router' declare module 'vue' { interface ComponentCustomOptions { beforeRouteEnter?(to: any, from: any, next: () => void): void } }
提示
增强必须放在模块
.ts
或.d.ts
文件中。有关详细信息,请参阅Type Augmentation Placement。另请参阅 指南 - 增强自定义选项
ComponentCustomProps
用于增强允许的 TSX 属性,以便在 TSX 元素上使用未声明的属性。
示例
tsdeclare module 'vue' { interface ComponentCustomProps { hello?: string } } export {}
tsx// now works even if hello is not a declared prop <MyComponent hello="world" />
提示
增强必须放在模块
.ts
或.d.ts
文件中。有关详细信息,请参阅Type Augmentation Placement。
CSSProperties
用于增强样式属性绑定中允许的值。
示例
允许任何自定义 CSS 属性
tsdeclare module 'vue' { interface CSSProperties { [key: `--${string}`]: string } }
tsx<div style={ { '--bg-color': 'blue' } }>
html<div :style="{ '--bg-color': 'blue' }"></div>
提示
增强必须放在模块 .ts
或 .d.ts
文件中。有关详细信息,请参阅Type Augmentation Placement。