[开发者心得] 马斯克,用了都说好的《第一性原则》拆解学习TS语言!

[复制链接]
1743 |0
孤檠Va0 发表于 2023-3-21 18:11:26 | 显示全部楼层 |阅读模式
本帖最后由 NewBee 于 2023-3-21 19:02 编辑

一、TypeScript第一性原则:
    TypeScript 的第一性原则是添加可选的静态类型
    解释:TypeScript是一种静态类型的编程语言,主要特点之一是静态类型检查!这意味着它在编译时会检查变量和函数的类型,所以在编写代码时必须明确变量的类型。让代码更加可读、可维护和可靠,因为类型错误在编译时就会被发现,而不是在运行时。

二、基本构成元素有哪些?
    TypeScript 的基本构成元素包括:变量、常量、函数、类、接口、枚举、类型注解、类型别名、泛型等。

三、变量常量
如何定义和使用?
    在 TypeScript 中,变量和常量可以通过关键字 let const 进行定义。变量可以重新赋值,而常量则不可以。例如:

let x: number = 1;    //定义变量
const y: string = "hello";    //定义常量
x = 2; // 合法,x 的值变为 2
y = "world"; // 非法,因为 y 是常量,不能重新赋值


四、函数
如何定义和使用?
    在 TypeScript 中,函数可以通过以下方式进行定义:

// 定义一个函数,函数名为 add,接受两个参数 x 和 y,它们的类型都是 number,函数的返回值也是 number 类型。
function add(x: number, y: number): number {
  return x + y;    // 在函数内部,将 x 和 y 相加,并将结果返回。
}


    函数定义中,我们可以 指定 函数的 参数 类型和 返回值 类型,从而提高代码可读性和安全性。

五、
如何定义和使用?
    在 TypeScript 中,类可以通过以下方式进行定义:


// 定义一个名为 Person 的类。
class Person {
  // 声明一个私有成员变量 name,类型为 string。
  private name: string;

  // 定义一个构造函数,接收一个名为 name 的 string 类型参数。
  constructor(name: string) {
    // 在构造函数内部,将传入的 name 参数赋值给私有成员变量 this.name。
    this.name = name;
  }

  // 定义一个公有成员方法 getName,该方法不接受参数,返回值为 string 类型。
  public getName(): string {
    // 在方法内部,返回该实例的私有成员变量 name。
    return this.name;
  }
}


    类定义中,我们可以 指定 类的 属性、方法 以及 访问修饰符 等。类的实例化可以通过 new 关键字来创建,例如:

// 假设之前已经定义了 Person 类。

// 创建一个名为 person 的常量,使用 Person 类的构造函数创建一个新的 Person 实例,
// 将名为 "Tom" 的 string 类型参数传递给构造函数。因为 Person 类的构造函数中需要一个名为 name 的参数,
// 所以在实例化 Person 对象时,必须为 name 参数提供一个值。
const person = new Person("Tom");

// 调用 person 对象上的公有方法 getName,返回其 name 属性值,并将该值作为字符串输出到控制台。
console.log(person.getName()); // 输出 "Tom"



六、接口
如何定义和使用?
    在 TypeScript 中,接口可以通过以下方式进行定义:

// 定义了一个名为 Shape 的接口。
interface Shape {
  // 声明了一个名为 name 的属性,该属性类型为 string。
  name: string;

  // 声明了一个名为 color 的可选属性,该属性类型为 string。可选属性可以存在,也可以不存在。
  color?: string;

  // 声明了一个名为 getArea 的方法,该方法不接收参数,返回值为 number 类型。
  getArea(): number;
}


    接口定义中,我们可以指定接口的属性和方法,并且可以使用 可选属性 只读属性 等特性。接口可以用来描述对象的形状,从而提高代码可读性和安全性。

七、枚举
如何定义和使用?
    在 TypeScript 中,枚举可以通过以下方式进行定义:

enum Direction {
  Up = 1,
  Down,
  Left,
  Right,
}


    枚举定义中,我们可以指定枚举值的名称和对应的数值,或者不指定数值时自动从 0 开始递增。枚举可以用来描述一组有限的可能性,从而提高代码可读性和安全性。

八、类型注解类型别名泛型
分别是什么?
    类型注解:用于指定变量、函数、类等元素的类型,例如: let x: number = 1 ;
    类型别名:用于给一个类型起一个别名
    泛型:在定义函数、类等元素时使用类型参数,使得这些元素可以处理多种不同类型的数据。例如:

// 定义一个泛型函数 identity,使用类型参数 T 表示参数的类型
function identity<T>(arg: T): T {        //泛型函数identity,它接受一个类型为T的参数arg
  return arg; // 返回传入的参数arg的值,类型为 T
}

// 调用泛型函数 identity,将字符串 "hello world" 作为参数传递,显式指定类型参数为 string
// 函数返回值类型为 string,因为传入的参数类型为 string
let result = identity<string>("hello world");



回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表