javascript - 扩展打字稿接口
问题描述
我有组件Checkbox.tsx
,它的 ts 界面看起来像:
export interface ICheckbox {
/** DOM element id. */
id: string;
/** Handler to the onClick event */
onCheck?: (e: React.ChangeEvent<HTMLInputElement>) => void;
}
现在,我想创建另一个组件CheckboxWithLabel.tsx
,它有一个非常相似的界面,唯一的额外的东西将是一个标签。如何合并两个接口或扩展现有接口?就像是:
import {ICheckbox} from './Checkbox.tsx';
export interface ICheckboxLabel {
...ICheckbox,
label: string;
}
我试过的是:
export interface ICheckboxLabel extends ICheckbox{
children: JSX.Element | JSX.Element[] | string;
}
问题是,我不知道这是否是正确的方法。
解决方案
您可以使用 extends 关键字导出接口。
interface a extends b {
...
}
在你的例子中,它会像。
export interface ICheckboxLabel extends ICheckbox {
label: string
}
另请访问官方文档以获取更多信息https://www.typescriptlang.org/docs/handbook/interfaces.html
推荐阅读
- vue.js - vue.js keep-alive 和事件渲染
- deep-learning - 如何在pytorch中连接嵌入层
- html - 使用 CSS(Flex 或 CSS Grid)在水平和垂直布局之间切换
- sql - 使用 SQL Server DB 从 Linux 服务器连接到 Windows 服务器
- amazon-web-services - 为什么我无法从我的 EC2 实例访问我的亚马逊 RDS 实例?
- java - 运行程序测试不同的循环结构后没有输出
- c# - c#如何强制转换为IList
并返回 IList - swift - 根据是否为第一响应者设置文本视图的背景颜色
- javascript - 使用 mocha/chai 测试时比较两个日期
- python - Conv2dTranspose 产生错误的输出形状