TypeScript 提示: never 类型是 TypeScript 中的一种特殊类型,表示从未出现的值。当属性被标记为 never 时,TypeScript 确保永远不能将值分配给该属性。这使得它非常适合创建互斥的 props,因为它可以防止开发人员意外地使用不应该同时存在的 props。
never 类型通常出现在 TypeScript 中的几种场景中:
永不返回的函数(抛出错误或具有无限循环)
switch 语句中的详尽类型检查
不可能的类型交叉(例如 string & number)
使属性互斥,就像我们在这种模式中所做的那样
使其与当前的 defineProps 实现兼容的主要技巧是使用 never 来显式标记未使用的变体道具。
ts
// Base props shared between variants
interface BaseProps {
title: string
}
// Success variant
type SuccessProps = BaseProps & {
variant: "primary" | "secondary"
message: string
duration: number
// Explicitly mark error props as never
errorCode?: never
retryable?: never
}
// Error variant
type ErrorProps = BaseProps & {
variant: "danger" | "warning"
errorCode: string
retryable: boolean
// Explicitly mark success props as never
message?: never
duration?: never
}
// Final props type - only one variant allowed!
type Props = SuccessProps | ErrorProps
评论区
评论加载中...