ts 总结 二

1、声明变量:声明变量的类型及初始值
var name: string = 'zhangsan'
2、类型断言
手动指定一个值的类型,允许变量从一种类型更改未另一种类型
语法:

<类型>值 // react 中这种不能使用
// 或者
值 as 类型

3、类型推断;
当类型没有给出时,TypeScript 编译器利用类型推断来推断类型。
4、联合类型
联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值。
5、数组

interface namelist { 
   [index:number]:string 
} 
 
// 类型一致,正确
var list2:namelist = ["a","b","c"]
// 错误元素 1 不是 string 类型
// var list2:namelist = ["a",1,"c"]

6、对象

interface ages { 
   [index:string]:number  // 任意值为number的对象类型
} 
 
var agelist:ages; 
 // 类型正确 
agelist["runoob"] = 15  
var Iobj:Child = { v1:12, v2:23} 
// 等价 var Iobj =<Child>{ v1:12, v2:23} 
  • 类型别名: type
type Text = string | { text: string };
type Coordinates = [number, number];
type Callback = (data: string) => void;

7、any 是一种禁用类型检查并有效地允许使用所有类型的类型。将 any 设置为特殊类型 any 将禁用类型检查:

8、类型: unknown,unknown 与 any 类似,但更安全。TypeScript 将阻止使用 unknown 类型

9、never 类型:代表从不会出现的值,这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环),无论何时定义错误,never 都会有效地抛出错误。很少用

10、泛型:允许创建 "类型变量",可以用来创建不需要显式定义所使用类型的类、函数和类型别名。泛型使编写可重用代码变得更容易。

function createPair<S, T>(v1: S, v2: T): [S, T] {
  return [v1, v2];
}
console.log(createPair<string, number>('hello', 42)); // ['hello', 42]

11、工具类型:
TypeScript 附带了大量类型,可以帮助进行一些常见的类型操作,通常称为工具类型(实用类型)。

本章介绍了最流行的工具类型(Utility Type)。

  • Partial
    Partial 更改对象中的所有属性为可选。
interface Point {
  x: number;
  y: number;
}
let pointPart: Partial<point> = {}; // `Partial` 使得 x 与 y 都变成可选
pointPart.x = 10;
  • Required
    Required 更改对象中的所有属性为必须的。
interface Car {
  make: string;
  model: string;
  mileage?: number;
}
let myCar: Required<car> = {
  make: 'Ford',
  model: 'Focus',
  mileage: 12000 // `Required` 强制 mileage 必须定义
};
  • Record
    Record 是定义具有特定键类型和值类型的对象类型的简写方式。
const nameAgeMap: Record<string, number=""> = {
  'Alice': 21,
  'Bob': 25
};
// Record<string, number> 相当于 { [key: string]: number }

  • Omit
    Omit 从对象类型中删除 key。
  • Pick
    Pick 从对象类型中删除除指 key 以外的所有 key。
  • Exclude
    Exclude 从联合类型中删除类型。
  • ReturnType
    ReturnType 提取函数类型的返回类型。

https://cankaoshouce.com/typescript/typescript-utility-types.html
https://jkchao.github.io/typescript-book-chinese/compiler/scanner.html

7、拓展接口(对象)

// 尝试创建一个新的接口并扩展它,如下所示
interface Rectangle {
  height: number,
  width: number
}
interface ColoredRectangle extends Rectangle {
  color: string
}
const coloredRectangle: ColoredRectangle = {
  height: 20,
  width: 10,
  color: "red"
};
console.log(coloredRectangle);
posted @ 2022-10-21 15:38  Running00  阅读(19)  评论(0编辑  收藏  举报