1、现在你的环境已经搭建好,在代码编辑器中打开 src/index.ts 文件。输入以下代码:let a = 1 + 2; let b = a + 3; let c = { apple: a, banana: b }; let d = c.apple * 4。然后将鼠标悬停在 a、b、c 和 d 上,TypeScript 会自动推断这些变量的类型,请问 a、b、c、d 分别是什么类型?
将鼠标悬停在 a 、 b 、 c 和 d 上,TypeScript 能自动推断出各变量的类型:
-
a为数字类型 -
b为数字类型 -
c是具有特定结构的对象类型 -
d同样为数字类型
2、扩展我们开发的“工厂模式”实现,以使其更安全,但会在一定程度上破坏抽象性。更新实现,让使用者在编译时就知道调用 Shoe.create('boot') 返回的是 Boot ,调用 Shoe.create('balletFlat') 返回的是 BalletFlat (而不是两者都返回 Shoe )。提示:回顾“重载函数类型”。
可使用重载函数类型来更新 Shoe.create 方法,让使用者在编译时明确不同输入对应的返回类型。示例代码如下:
// 重载定义
function create(type: 'balletFlat'): BalletFlat;
function create(type: 'boot'): Boot;
function create(type: 'sneaker'): Sneaker;
function create(type: 'balletFlat' | 'boot' | 'sneaker'): Shoe {
switch (type) {
case 'balletFlat':
return new BalletFlat();
case 'boot':
return new Boot();
case 'sneaker':
return new Sneaker();
}
}
let Shoe = {
create
};
这样,当调用 Shoe.create('boot') 时,编译时就知道返回的是 Boot 类型;调用 Shoe.create('balletFlat') 时,返回的是 BalletFlat 类型。
TypeScript类型与编程实践解析

最低0.47元/天 解锁文章
1875

被折叠的 条评论
为什么被折叠?



