1、让 TypeScript 在你进行无效操作时显示红色波浪线(我们称之为“抛出类型错误”),应该怎么做?
在编辑 src/index.ts
文件时,可尝试对变量进行不符合其类型的操作,例如对数字类型变量使用字符串方法等,TypeScript 就会显示红色波浪线抛出类型错误。
2、类和接口之间有什么区别?
实现接口与扩展抽象类很相似,但接口更通用、轻量级,仅存在于编译时,不生成 JavaScript 代码,可对对象、数组、函数、类或类实例等形状进行建模;而抽象类(可看作类的一种)更具特定用途且功能丰富,会生成运行时代码(JavaScript 类),可以有构造函数、提供默认实现以及设置属性和方法的访问修饰符。
选择使用哪个取决于具体用例:
- 当多个类共享实现时,使用抽象类;
- 当需要一种轻量级方式表明“这个类是 T”时,使用接口。
3、扩展“工厂模式”实现,以使其更安全,代价是稍微破坏抽象性。更新实现,让使用者在编译时就知道调用 Shoe.create('boot')
返回 Boot
,调用 Shoe.create('balletFlat')
返回 BalletFlat
(而不是两者都返回 Shoe
)。提示:可以使用“重载函数类型”。
可以使用函数重载来实现这一需求。以下是扩展后的代码:
// 定义鞋的类型和具体鞋子类
interface Shoe {
purpose: string;
}
class BalletFlat implements Shoe {
purpose = 'dancing';
}
class Boot implements Shoe {
purpose = 'woodcutting';
}
class Sneaker implements Shoe {