MST

星途 面试题库

面试题:TypeScript 与 JSDoc 协同开发中类型定义问题

在使用 TypeScript 和 JSDoc 协同开发时,假设我们有一个函数,接收一个对象参数,对象中有一个 'name' 属性为字符串类型,'age' 属性为数字类型。请分别用 TypeScript 的类型注解和 JSDoc 的方式来定义这个函数的参数类型,并解释两者在使用上的异同点。
14.3万 热度难度
前端开发TypeScript

知识考点

AI 面试

面试题答案

一键面试

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 主要侧重于基本类型描述和简单的结构定义。