深入浅出 TypeScript
TypeScript 是一种开源的编程语言,它是 JavaScript 的超集,TypeScript 增强了 JavaScript 的开发体验,通过引入静态类型检查、编辑器支持和更好的可读性,提高了代码质量和开发效率。它是构建大型应用程序、团队协作和长期维护的理想选择。
TypeScript VS JavaScript
| TypeScript | JavaScript |
|---|---|
| JavaScript 的超集,用于解决大型项目的代码复杂性 | 一种脚本语言,用于创建动态网页 |
| 强类型,支持静态和动态类型 | 动态弱类型语言 |
| 可以在编译期间发现并纠正错误 | 只能在运行时发现错误 |
| 不允许改变变量的数据类型 | 变量可以被赋值成不同类型 |
TypeScript带来了什么
- 类型安全
- 下一代JS特性
- 完善的工具链
TS基础-基础类型
boolean:表示布尔类型,只能为true或false。number:表示数字类型,包括整数和浮点数。string:表示字符串类型,用于表示文本数据。enum:表示枚举类型,用于定义一组命名的常量值。any:表示任意类型,可以赋予任何类型的值。它会关闭类型检查,不建议频繁使用。void:表示没有任何类型,通常用于函数没有返回值的情况。never:表示永远不存在的类型,常用于表示抛出异常或无法正常结束的函数返回值类型。array:表示数组类型,用于存储多个相同类型的元素。可以使用泛型形式Array<元素类型>或简化形式元素类型[]来定义数组类型。tuple:表示元组类型,允许在一个固定长度的数组中指定每个元素的类型。例如,[string, number]表示一个包含字符串和数字的元组。null和undefined:表示null和undefined两个特殊类型。object:表示非原始类型,即除了number、string、boolean、symbol、null和undefined之外的类型。
TS基础-interface
在TypeScript中,接口(interface)是一种用于定义对象的结构和类型的语法。使用接口可以定义对象的属性、方法以及它们的类型注解。
interface Person {
name: string;
age: number;
sayHello: () => void;
}
// 使用接口定义的结构创建对象
const person: Person = {
name: "Alice",
age: 25,
sayHello: () => {
console.log("Hello!");
},
};
console.log(person.name); // 输出:Alice
person.sayHello(); // 输出:Hello!
在上述示例中定义了一个名为Person的接口,它具有三个属性:name、age和sayHello。name属性是一个字符串,age属性是一个数字,sayHello属性是一个没有参数和返回值的函数。然后,基于这个接口创建了一个person对象,它符合Person接口定义的结构。
接口还支持可选属性和只读属性的定义,可以使用 ? 标记属性为可选,使用 readonly 标记属性为只读。
接口可以在类中实现(implements)以强制实现类需要满足接口定义的结构。这种方式通过继承和实现接口的方式提供了 TypeScript 中的面向接口编程能力。
通过使用接口可以明确指定对象应该具有哪些属性和方法,并且可以对它们的类型进行约束。这样一来,在开发过程中,如果对象不满足接口定义的要求,编译器将会给出相应的错误提示,帮助我们更早地发现潜在的问题。