typescript学习笔记 | 青训营笔记

81 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第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
}

除函数泛型之外还可以有接口泛型,类泛型。

同时也可以对泛型进行约束。

\