这是我参与「第四届青训营 」笔记创作活动的的第8天。
Typescript初识:
Typescript是什么:
TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会被编译为JavaScript代码。Typescript 为 JavaScript 增加类型能力。
安装 TypeScript:
npm install -g typescript
tsc -V
TypeScript语法:
1.布尔值
最基本的数据类型就是简单的 true/false 值,在JavaScript 和 TypeScript 里叫做 boolean(其它语言中也一样)。
let l: boolean = true;
2.数字
和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这些浮点数的类型是 number。
let l: number = 10 // 十进制
3.字符串
字符串类型。
let name:string = 'tom'
4.undefined
5.null
6.数组
TypeScript 像 JavaScript 一样可以操作数组元素。 有两种方式可以定义数组。
第一种方式:
let list1: number[] = [1, 2, 3];
第二种方式:
let list2: Array<number> = [1, 2, 3]
7.元组
元组类型允许表示一个已知元素数量和类型的数组。
let l: [string, number]
l = ['hello', 10]
8.枚举
枚举类型,表示相互的一对一。
enum Color {
Red,
Green,
Blue
}
let myColor: Color = Color.Green // 0
9.any
有时候,我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。建议用unknown
10.联合类型
联合类型(Union Types)表示取值可以为多种类型中的一种
function toString2(x: number | string) : string {
return x.toString()
}
11.类型断言
类型断言(Type Assertion): 可以用来手动指定一个值的类型 语法: 方式一: <类型>值 方式二: 值 as 类型。
12.接口
我们使用接口(Interfaces)来定义对象的类型。接口是对象的状态(属性)和行为(方法)的抽象(描述)。
- 普通接口
interface IPerson {//接口声明可以在最前面加大写I
readonly id: number
name: string
age?: number
}
const person1: IPerson = {
id: 1,
name: 'tom',
age: 20,
}
- 函数接口
interface a {
(b: string, c: string): string
}
const a1: a = function (b: string, c: string): boolean {
return b+c
}
- 类接口
/*
类类型: 实现接口
1. 一个类可以实现多个接口
2. 一个接口可以继承多个接口
*/
interface anmial {
aoao(): any;
}
class Car implements anmial {
aoao() {
console.log('Car aoao');
}
}
12.类
class Communication{
// 声明属性
message: string
// 构造方法
constructor (message: string) {
this.message = message
}
// 一般方法
mInit (): string {
return 'Hello ' + this.message
}
}
13.函数
函数是 JavaScript 的一等公民,是基础。
为函数定义类型:
function add(x: number=1, y: number,c?: number,...args): number {
return x + y
}
函数重载: 函数名相同, 而形参不同的多个函数
14.泛型
指在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定具体类型的一种特性。
function createArray <T> (value: T, count: number) {
const arr: Array<T> = []
for (let index = 0; index < count; index++) {
arr.push(value)
}
return arr
}
除函数泛型之外还可以有接口泛型,类泛型。
同时也可以对泛型进行约束。
\