TypeScript 类型注解方式
function greet(person: { name: string; age: number }) {
console.log(`Hello, ${person.name}! You are ${person.age} years old.`);
}
JSDoc 方式
/**
* @param {Object} person - The person object.
* @param {string} person.name - The name of the person.
* @param {number} person.age - The age of the person.
*/
function greet(person) {
console.log(`Hello, ${person.name}! You are ${person.age} years old.`);
}
异同点
- 相同点:
- 两者都能为函数参数定义类型,增强代码的可读性与可维护性,在一定程度上可以进行类型检查,帮助开发者发现潜在的类型错误。
- 不同点:
- 语法与使用场景:TypeScript 是 JavaScript 的超集,需要专门的编译步骤将 TypeScript 代码转换为 JavaScript 代码,类型注解紧密集成在代码中。而 JSDoc 以注释形式存在,可直接用于普通 JavaScript 代码,无需额外编译步骤,更适合在已有 JavaScript 项目逐步添加类型注释的场景。
- 类型检查严格程度:TypeScript 提供更严格和全面的类型检查,在编译阶段就能发现很多类型相关错误。JSDoc 的类型检查依赖于工具(如 ESLint 插件等),相对没有 TypeScript 那么严格和全面。
- 功能丰富度:TypeScript 支持很多高级类型特性,如泛型、类型推断、联合类型、交叉类型等,功能更强大。JSDoc 主要侧重于基本类型描述和简单的结构定义。