# typescript-study **Repository Path**: dujiang1992/typescript-study ## Basic Information - **Project Name**: typescript-study - **Description**: No description available - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-06-07 - **Last Updated**: 2021-06-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # typescript学习 1. **vscode配置自动编译** <1>. 输入命令: tsc --init 生成tsconfig.json, 改“outDir” 为 “./js” <2>. 终端-->运行任务-->监视 <3>. [详细代码请看: stage01/index.ts](/stage01/index.ts) 2. **typescript的数据类型** <1>. **布尔类型(boolean)** <2>. **数字类型(number)** <3>. **字符串类型(string)** <4>. **数组类型(array)** <5>. **元组类型(tuple)** <6>. **枚举类型(enum)** <7>. **任意类型(any)** <8>. **null和undefined** <9>. **void类型:表示没有任何类型,一般用于定义方法的时候方法没有返回值** <10>. **never类型:是其他类型(包括null和undefined)的子类型,代表从不会出现的值** * **[详细代码请看:typescript-study/stage02/index.ts](/stage02/index.ts)** * **[详细信息请看:stage02/README.md](/stage02/README.md)** 3. typescript函数 * **函数的定义** * **ts中定义方法传参** <1>. 普通参数 <2>.方法可选参数: ts中在参数后面加上'?' <3>. 默认参数 <4>. 剩余参数 * **函数重载** * **[详细资料请看:/stage03/README.md]** * **[详细代码请看:/stage03/index.ts]** 4. typescript中的类和继承 * es5 1. es5里面的类 * 最简单的类 * 构造函数添加属性和方法 * 原型链里面添加属性和方法 2. es5里的继承 * 对象冒充实现继承 * 原型链实现继承 * 对象冒充 + 原型链组合实现继承 3. **[详细资料请看:/stage04/README.md](/stage04/README.md)** 4. **[详细代码请看:/stage04/index.ts](/stage04/index.ts)** * typescript 1. ts中类的定义 2. 类的继承(extends, super) 3. 类的修饰符 * public: 公有。 在类里面,子类,类外面都可以访问 * protected: 保护类型。 在类里面,子类里面可以访问,在类外部服务访问 * private: 私有。 在类里面可以访问,子类,类外部无法访问 4. **[详细资料请看:/stage05/README.md](/stage05/README.md)** 5. **[详细代码请看:/stage05/index.ts](/stage05/index.ts)** 5. typscript静态属性、方法、多态和抽象类 * **静态属性、方法** 1. es5的静态属性、方法 2. typescript的静态属性、方法 * **多态** 1. 概念:父类定义一个方法不去实现,让继承它的子类取实现,每一个子类有不同的表现 2. 注意:多态属于继承 * **抽象类** 1. 概念:它是提供其他类继承的基类,不能直接被类实例化 2. 注意: * 用abstract关键字定义抽象类和抽象方法,抽象类中的抽象方法不包含具体实现并且必须在派生类中实现 * abstract:抽象方法只能在抽象类里面 * 抽象类和抽象方法用来定义标准,标准:Animal这个类要求它的子类必须包含eat方法 6. typescript中的接口 * **作用:** 在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。typescript中的接口类似于java * **分类:** 1. **属性类接口(用来对批量方法进行约束)** 2. **函数类型接口:对方法传入的参数以及返回值进行约束,批量约束** 3. **可索引接口:数组、对象的约束(不常用)** 4. **类类型接口:对类的约束。(和抽象类有点相似)** 5. 接口拓展 <1>. **接口可以继承接口** <2>. **可以同时继承类和实现接口** * [详细资料请看:/stage07/README.md](/stage07/README.md) * [详细代码请看:/stage07/index.ts](/stage07/index.ts) 7. **typescript中的泛型** * **泛型的定义** * 泛型就是解决类、接口、方法的复用性,以及对不特定数据类型的支持(类型校验) * **泛型函数** * **泛型类** * **泛型接口** <1>. 方式一 <2>. 方式二 * [详细资料请看:/stage08/README.md](/stage08/README.md) * [详细代码请看:/stage08/index.ts](/stage08/index.ts) * **练习:封装一个操作数据库的库,支持Mysql、Mssql、get方法** * [详细代码请看:/stage09/index.ts](/stage09/index.ts) 8. **模块** * 模块的概念 * 模块导出的几种方式 <1>. export 导出声明 <2>. export 导出语句 <3>. export default <4>. import 导入模块 * 模块化封装上一讲的db库 * [详细代码请看:/stage10/index.ts](/stage10/index.ts) 9. **命名空间** * **概念:** * 在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数,类,接口等放置到命名空间内,同Java的包,.net的命名空间一样,typescript的命名空间可以将代码包裹起来,只对外暴露需要在外部访问的对象,命名空间内的对象通过 * **命名空间和模块的区别:** 1. 命名空间:内部模块,主要用于组织代码,避免命名冲突 2. 模块:ts的外部模块的简称,侧重代码的重用,一个模块里可能会有多个命名空间 * **实现方式** 1. **方式一:模块内部** 2. **方式二:模块外部** * [详细代码请看:/stage11/index.ts](/stage11/index.ts) * [详细资料请看:/stage11/README.md](/stage11/README.md)