typescript - 具有相等运算符的打字稿泛型类型是什么意思?
问题描述
我正在学习 typescript 泛型,并且遇到了以下泛型类型,以及用于扩展类型的等号运算符
export interface DataType {
[key: string]: FieldValue;
}
export interface FormProps<Data extends DataType = DataType> { }
这里是什么DataType = DataType
意思?
解决方案
如果您不提供类型Data
(必须扩展DataType
),它将默认为DataType
.
从以前的发行说明
考虑一个创建新 HTMLElement 的函数,不带参数调用它会生成一个 Div;您也可以选择传递子列表。以前您必须将其定义为:
declare function create(): Container<HTMLDivElement, HTMLDivElement[]>; declare function create<T extends HTMLElement>(element: T): Container<T, T[]>; declare function create<T extends HTMLElement, U extends HTMLElement>(element: T, children: U[]): Container<T, U[]>;
使用通用参数默认值,我们可以将其简化为:
declare function create<T extends HTMLElement = HTMLDivElement, U = T[]>(element?: T, children?: U): Container<T, U>;
泛型参数默认遵循以下规则:
- 如果类型参数具有默认值,则认为它是可选的。
- 必需的类型参数不能跟在可选的类型参数之后。
- 类型参数的默认类型必须满足类型参数的约束(如果存在)。
- 指定类型参数时,您只需为所需的类型参数指定类型参数。未指定的类型参数将解析为其默认类型。
- 如果指定了默认类型并且推理无法选择候选者,则推断默认类型。
- 与现有类或接口声明合并的类或接口声明可能会为现有类型参数引入默认值。
- 与现有类或接口声明合并的类或接口声明可以引入新的类型参数,只要它指定默认值即可。
推荐阅读
- java - 从另一个组件更新组件的状态
- vuejs2 - Nuxt 尝试获取窗口大小时无法在“节点”上执行“appendChild”
- python - 在 python2 中然后在 python3 中计算大数时出现奇怪的结果
- java - 在 Empty EditText 处设置 Span(尤其是 AbsoluteSizeSpan)
- javascript - 在 twilio 视频聊天中显示禁用音频
- javascript - 将消息从 iframe 发送到父级但不同的机器
- css - 如果需要,如何截断最后一个元素
- python - 从特定日期开始的过去 24 小时内每小时过滤和计数条目
- javascript - 如何从多选的 activeObjects[] 元素中获取原始坐标?
- regex - 正则表达式,选择特定字符串后的数字