速览!TypeScript面试6-10题

247 阅读3分钟

🧑‍💻速览!TypeScript面试6-10题-HowieCong

6. TypeScript中 any、never、unknown、null & underfined 和 void的区别

  • any:动态类型变量,是最宽松的类型,可以存储任何类型的值,但牺牲了类型检查的安全性

  • never:永远不存在的值的类型,常用于抛出异常,根本没有返回值的函数表达式(无限循环),或者箭头函数表达式返回值类型,类型排除检查

  • unkonwn:任何类型的值都能赋值给unkonwn;unkonwn只能赋值给 unknownany

  • null & undefined:默认是所有类型子类型;strictNullChecks标记时,只能赋值给void或者他们自身

  • void:没有任何类型,通常用于没有返回值的函数,函数返回值可以定义为void

7. TypeScript 中可以使用 String、Number、Boolean、Symbol、Object等给类型做声明吗

  • Answer:可以的,但大写和小写形式有些区别,小写形式更符合TS的类型推断和使用修改,大写形式会导致一些意外情况,尤其是在intanceof操作符;在实际开发中,如果要明确对象的具体结构,通常使用接口interface或类型别名type来声明对象类型。
let name:string = 'foo'
let age:number = 6
let isDone:boolean = false
let sym:Symbol = Symbol()

interface Person{
    name:string;
    age:number;
}
let str1: string = 'hello'; //基本数据类型的string的值
let str2: String = 'world'; //String对象的实例
console.log(str1 instanceof String); // false 
console.log(str2 instanceof String); // true

type Tuple = [string, number];
    interface Animal { 
    name: string; 
    age: number; 
} 
function greet(person: Animal): string {
    return `Hello, ${person.name} of age ${person.age}`; 
}

8. TypeScript 中的 this 和 JavaScipt中的this有什么差异?

  • TS

    • noImplicitThis:true 强制显示,必须去声明this类型,才能在函数或者对象中使用this

    • 箭头函数的this和JS保持一致,避免了一些常见的this指向混淆问题

    • 在接口和类中,this的使用更加明确和类型安全,确保了方法的this指向正确

  • JS

    • 具有动态绑定特性,其值在函数调用时确定,导致this的行为可能因为调用方式不同而不同
  • 结合实际应用

    • 使用TypeScript的this类型检查可以提前发现潜在的this错误

    • 对于依赖this的函数,明确this的类型可以让代码更易于理解维护,在回调函数,使用箭头函数可以确保this指向期望的对象,避免意外的this指向期望的对象,避免意外的this指向全局对象或者underfined

9. TypeScript中使用Union Types 有哪些注意事项?

  • 在使用联合类型时,最关键的是通过类型收窄确保类型安全。比如用 typeofin 或可辨识联合区分类型,避免直接访问非共有属性。

  • 复杂联合类型建议用 type 别名管理,同时注意避免与 any 混用导致类型污染

  • 实际开发中,可辨识联合和函数重载能有效提升代码健壮性

❓其他

1. 疑问与作者HowieCong声明

  • 如有疑问、出错的知识,请及时点击下方链接添加作者HowieCong的其中一种联系方式或发送邮件到下方邮箱告知作者HowieCong

  • 若想让作者更新哪些方面的技术文章或补充更多知识在这篇文章,请及时点击下方链接添加里面其中一种联系方式或发送邮件到下方邮箱告知作者HowieCong

  • 声明:作者HowieCong目前只是一个前端开发小菜鸟,写文章的初衷只是全面提高自身能力和见识;如果对此篇文章喜欢或能帮助到你,麻烦给作者HowieCong点个关注/给这篇文章点个赞/收藏这篇文章/在评论区留下你的想法吧,欢迎大家来交流!

2. 作者社交媒体/邮箱-HowieCong