TypeScript 工具类型
Jobs by vuejobs.com
INFO
此页面仅列出了一些可能需要解释其使用方式的常用工具类型。有关导出类型的完整列表,请查看源代码。
PropType<T>
用于在用运行时 props 声明时给一个 prop 标注更复杂的类型定义。
示例
tsimport { PropType } from 'vue' interface Book { title: string author: string year: number } export default { props: { book: { // 提供一个比 `Object` 更具体的类型 type: Object as PropType<Book>, required: true } } }
ComponentCustomProperties
用于增强组件实例类型以支持自定义全局属性。
示例
tsimport axios from 'axios' declare module 'vue' { interface ComponentCustomProperties { $http: typeof axios $translate: (key: string) => string } }
TIP
类型扩展必须被放置在一个模块
.ts
或.d.ts
文件中。查看类型扩展指南了解更多细节参考:指南 - 扩展全局属性
ComponentCustomOptions
用来扩展组件选项类型以支持自定义选项。
示例
tsimport { Route } from 'vue-router' declare module 'vue' { interface ComponentCustomOptions { beforeRouteEnter?(to: any, from: any, next: () => void): void } }
TIP
类型扩展必须被放置在一个模块
.ts
或.d.ts
文件中。查看类型扩展指南了解更多细节。参考:指南 - 扩展自定义选项
ComponentCustomProps
用于扩展全局可用的 TSX props,以便在 TSX 元素上使用没有在组件选项上定义过的 props。
示例
tsdeclare module 'vue' { interface ComponentCustomProps { hello?: string } } export {}
tsx// 现在即使没有在组件选项上定义过 hello 这个 prop 也依然能通过类型检查了 <MyComponent hello="world" />
TIP
类型扩展必须被放置在一个模块
.ts
或.d.ts
文件中。查看类型扩展指南了解更多细节。
CSSProperties
用于扩展在样式属性绑定上允许的值的类型。
- 示例
允许任意自定义 CSS 属性:
ts
declare module 'vue' {
interface CSSProperties {
[key: `--${string}`]: string
}
}
tsx
<div style={ { '--bg-color': 'blue' } }>
html
<div :style="{ '--bg-color': 'blue' }">
TIP
类型增强必须被放置在一个模块 .ts
或 .d.ts
文件中。查看类型增强指南了解更多细节。