* 基础类型语法:
* let name: string;
* let age: number;
* let isStudent: boolean;
* let list: string[];
* let list1: Array<string>;
* let person: { name: string, age: number };
* let fn: (name: string, age: number) => void;
* let result: string = fn('张三', 18);
标识符
* type -- 类型别名
* interface -- 接口
* | -- 联合类型
* & -- 交叉类型
* : -- 类型声明
* .d.ts -- 声明文件
* <> -- 泛型
* export -- 导出
* import -- 导入
* namespace -- 命名空间
* module -- 模块
* 类型别名:
* 就是将一个类型定义为一个新的类型名称,这样可以更方便的引用类型,提高代码的可读性。
* 别名是通过type关键字定义的,语法格式如下:
* type 别名 = 类型
* 示例:
* type Name = string;
*
* 接口:
* 就是将对象的属性和方法进行抽象,定义为一个接口,然后对象可以实现这个接口,实现接口的对象必须包含接口中定义的属性和方法。
* 接口是通过interface关键字定义的,语法格式如下:
* interface 接口名 {
* 属性名: 类型;
* 方法名(): 返回值类型;
* }
* 示例:
* interface Person {
* name: string;
* age: number;
* sayHello(): void;
* }
*
* 联合类型:
* 就是将多个类型合并为一个类型,可以通过|符号进行类型的合并。
* 示例:
* let name: string | number;
*
* 交叉类型:
* 就是将多个类型合并为一个类型,可以通过&符号进行类型的合并。
* 示例:
* interface Person {
* name: string;
* age: number;
* }
* interface Student {
* grade: string;
* }
* let person: Person & Student;
*
* 类型声明:
* 就是将一个变量或者函数的类型进行声明,可以通过冒号:进行类型的声明。
* 示例:
* let name: string;
*
*
* 声明文件:
* 就是将类型声明单独抽离出来,放到一个单独的文件中,然后通过import语句引入到其他文件中。
* 声明文件的文件后缀名是.d.ts,语法格式如下:
* declare module '模块名' {
* export interface Person {
* name: string;
* age: number;
* }
* }
* 示例:
* declare module 'person' {
* export interface Person {
* name: string;
* age: number;
* }
* }
*
* 泛型:
* 就是将类型参数化,可以在函数、类、接口中使用泛型,提高代码的复用性。
* 泛型是通过<>符号进行类型参数的定义,语法格式如下:
* function fn<T>(arg: T): T {
* return arg;
* }
*
* 示例:
* let result: string = fn<string>('hello');
*
*
*
* 模块:
* 就是将多个类型、变量、函数等封装到一个模块中,然后通过export关键字导出模块中的内容,通过import关键字引入模块中的内容。
* 模块是通过export关键字导出模块中的内容,通过import关键字引入模块中的内容,语法格式如下:
* export { Person, Student };
* import { Person, Student } from './person';
*
* 命名空间:
* 就是将多个类型、变量、函数等封装到一个命名空间中,然后通过export关键字导出命名空间中的内容,通过import关键字引入命名空间中的内容。
* 命名空间是通过namespace关键字定义的,语法格式如下:
* namespace 命名空间名 {
* export interface Person {
* name: string;
* age: number;
* }
* export interface Student {
* grade: string;
* }
* }
* import { Person, Student } from './person';
*
* 命名空间和模块:
* 命名空间和模块是两种不同的封装方式,命名空间是通过namespace关键字定义的,模块是通过export关键字定义的。
*