在实际的企业级前端项目里,类型安全往往是决定代码可维护性的关键因素。TDesign 采用全 TypeScript 编写,这一点在源码仓库的 src 目录中随处可见,几乎每个组件的 props、events、slots 都配备了完整的声明文件(.d.ts),开发者在 IDE 中即可获得精准的属性提示和错误检查。
以最常用的 TButton 为例,属性 type 被限制为 'primary' | 'secondary' | 'danger',而 loading 必须是布尔值;事件 onClick 的回调签名则明确为 (e: MouseEvent) => void。这不仅防止了误传字符串或数字,还让自动重构工具能够安全地替换属性名。
export interface 暴露,兼容 VS Code、WebStorm 等主流编辑器。strictNullChecks 与 noImplicitAny,即便是内部工具函数也不例外。在一个包含千行表格交互的后台系统中,开发者往往需要对 TTable 的列定义进行细粒度约束。下面的代码展示了如何在 TypeScript 中使用 TTableColumn 接口,实现列宽、对齐方式以及自定义渲染函数的完整类型校验。
import { TTable, TTableColumn } from 'tdesign-vue-next';
const columns: TTableColumn[] = [
{
title: '订单号',
colKey: 'orderId',
width: 150,
align: 'center',
},
{
title: '状态',
colKey: 'status',
// 编译时会提示只能使用 predefinedStatus
render: (h, { row }) => h('span', { class: `status-${row.status}` }, row.status),
},
];
export default {
components: { TTable },
setup() {
const data = ref([]);
// 省略数据获取逻辑
return { columns, data };
},
};
截至 2024 年底,TDesign 在 GitHub 上累计提交超过 5 万次,涉及 TypeScript 相关的改进占比约 30%。每一次大版本升级都会伴随 release-notes 中的类型变更日志,帮助团队在升级前做好迁移计划。与此同时,社区成员也常通过 PR 提交更细致的泛型约束,使得诸如 Form、Modal 等高级组件在复杂业务场景下仍能保持类型安全。
如果你正为项目的类型可靠性寻找突破口,TDesign 的 TypeScript 支持无疑提供了一把钥匙——从最底层的声明文件到生态层面的持续迭代,都在为大型团队的代码基座保驾护航。
参与讨论
TDesign的TS支持确实专业,我们项目用了之后bug少了很多
有人试过在React版本里用这些类型吗?
之前用别的库老是要手动写d.ts,这个直接内置太省事了
严格模式下的类型检查会不会影响构建速度啊
类型提示确实准,但文档例子能再多点就更好了
表格列定义这个例子很实用,刚好解决了我现在的问题
看到5万次提交里30%是TS改进,这投入力度可以👍