[Typescript] Type and Interface for performance
Let's say you're creating a component that has all the props of input
but needs to add a label
prop. You'll need to extend from the ComponentProps
type helper
import { ComponentProps } from "react";
export type InputProps =
ComponentProps<"input"> & {
label: string;
};
export function Input({
label,
...props
}: InputProps) {
return (
<label>
{label}
<input {...props} />
</label>
);
}
But unfortunately, intersections used this way will, on the scale of a large codebase, slow TypeScript down.
Instead, you should use an interface, using interface extends
:
import { ComponentProps } from "react";
export interface InputProps
extends ComponentProps<"input"> {
label: string;
}
See article for more details
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2022-10-10 [Typescript] Tips: Create autocomplete helper which allows for arbitrary values
2022-10-10 [Typescript] Tips: DeepPartial
2019-10-10 [Svelte 3] Use Svelte 3 transitions to gracefully show and hide DOM elements
2019-10-10 [TypeScript ] Using the Null Coalescing operator with TypeScript 3.7
2019-10-10 [TypeScript] Optional Chaining with TypeScript 3.7
2019-10-10 [Flutter] Custom a Slider with SliderTheme
2018-10-10 [Angular] Modify User Provided UI with Angular Content Directives