OWZLAB-TS-JS笔记#

Data: 2026-02-27 16:18:34

读我的思维导图#

  • 类型标注,建议使用小写。
  • 不要乱用 any,会把其他的已经定义的值也给破坏掉(any -> unknow 会好点)。
  • 断言写法
x = a as string;

x = <string>a;

// 都可以

// 下面是强制断言,看不太懂

let a: unkonwn;
a = 'hello';
a.toUpperCase(); // 其实会报错 
(a as string).toUpperCase(); // 无错

然后是 never 。

不能有任何的值,用在函数上。但几乎用不到。

而 void 是返回值为 空,或者为 undefined 。

语义上,就是希望开发者不关心该函数的返回值。


比较陌生的有 元组,叫 tuple,但它不是关键字,不写在程序里。

比如:

let arr: [string, number];
let arr: [string, number?];  // 表示第二位可有可无
let arr: [number, ...string[]];  // 表示可以有无限多的 string 类型的元素

然后是 枚举 enum ,这个好像 JS 里也有,就不多说了。

有一种可减少 js 编译的方式:

const enum Direction { Up, Down, Left, Right, }

创造全新类型,使用 type 。

很多公司的规范是,自己创造的 type ,要首字母大写。

示例如下:

type Status = number  |  string
// 这两种类型都可以

type Gender = '男' | '女'
// 只能使用这两种字符串

type Area = {}, type Address = {};
type House = Area & Address;
// 这样,House 就必须包含 Area 和 Address 都有的内容。

这个 interface 的作用是定一个契约,规定任何实现它的类必须有这三个东西:

  • name 字符串
  • age 数字
  • greet() 方法

问号是可选属性

let person : { 
	name: string, 
	age?: number //有没有 age 都可 
}

// person 是一个对象

// 如果后面想随意加,就:
let person: {
  name: string
  age: string
  [key:string]:any
}

let arr: string[];
// 只能存字符串数组

let arr2: Array<number>

// 只能写数值数组
// 泛型

- end -#

© 2025 –   海牧羽工厂 HMY Factory