Last updated on Oct 2, 2022

TypeScript 设计目标

The goal of TypeScript is to be a static typechecker for JavaScript programs - in other words, a tool that runs before your code runs (static) and ensures that the types of the program are correct (typechecked).

TypeScript 与 JavaScript 之间的关系

TypeScript stands in an unusual relationship to JavaScript. TypeScript offers all of JavaScript’s features, and an additional layer on top of these: TypeScript’s type system.

TypeScript 由三个部分组成:类型、语法与工程

TypeScript 的类型系统

简单类型系统,简单直观,能保证类型安全,但不够灵活。

function add(arg: number): number {
  return arg
}

泛型(Generic Type),通用的类型,它可以代表任何一种类型,也叫做类型参数。

它给类型系统增加了一些灵活性,在整体比较固定,部分变量的类型有变化的情况下,可以减少很多重复代码。

function add<T>(arg: T): T {
  return arg
}

interface GenericFn<T> {
  (arg: T): T
}

const myAdd: GenericFn<number> = add

声明时把会变化的类型声明成泛型(也就是类型参数),在调用的时候再确定类型。

但 JavaScript 太过于灵活,在 Java 中,对象都是类 new 出来的,不能凭空创造对象,但 JavaScript 却可以,它支持对象字面量。