TS对JS的改进主要是静态类型检查,静态类型检查有何意义?标准答案是“静态类型更有利于构建大型应用” 。
推荐使用TypeScript的原因有:
- TypeScript简化了JavaScript代码,使其更易于阅读和调试 。
- TypeScript是开源的 。
- TypeScript为JavaScript ide和实践(如静态检查)提供了高效的开发工具 。
- TypeScript使代码更易于阅读和理解 。
- 使用TypeScript,我们可以大大改进普通的JavaScript 。
- TypeScript为我们提供了ES6(ECMAScript 6)的所有优点 , 以及更高的生产率 。
- TypeScript通过对代码进行类型检查,可以帮助我们避免在编写JavaScript时经常遇到的令人痛苦的错误 。
- 强大的类型系统,包括泛型 。
- TypeScript只不过是带有一些附加功能的JavaScript 。
- TypeScript代码可以按照ES5和ES6标准编译 , 以支持最新的浏览器 。
- 与ECMAScript对齐以实现兼容性 。
- 以JavaScript开始和结束 。
- 支持静态类型 。
- TypeScript将节省开发人员的时间 。
- TypeScript是ES3、ES5和ES6的超集 。
let identifier: number = value;布尔类型:一个逻辑二进制开关 , 包含true或false
let identifier: string = " ";Null 类型: Null 表示值未定义的变量 。
let identifier: bool = Boolean value;未定义类型:一个未定义的字面量,它是所有变量的起点 。
let num: number = null;void 类型:分配给没有返回值的方法的类型 。
let unusable: void = undefined;5、TypeScript 中的变量以及如何声明?变量是内存中用于存储值的命名空间 。
在 TypeScript 中声明变量的类型语法在变量名称后包括一个冒号(:),后跟其类型 。与 JavaScript 相似,我们使用var关键字声明变量 。
在Typescript中声明变量时,必须遵循某些规则:
- 变量名称必须是字母或数字 。
- 不能以数字开头名称 。
- 除下划线( _ )和美元( $ )符号外,它不能包含空格和特殊字符 。
在泛型中 , 类型参数写在左括号(<)和右括号(>)之间,这使它成为强类型集合 。它使用一种特殊的类型变量来表示类型 。
function identity < T > (arg: T) : T {return arg;}let output1 = identity < string > ("edureka");let output2 = identity < number > (117);console.log(output1);console.log(output2);7、TypeScript 中 interface 和 type 的差别是什么?7.1、相同点
- 都可以描述一个对象或者函数
- 都允许拓展(extends)
// 1、interface extends interfaceinterface Name {name: string;}interface User extends Name {age: number;}// 2、type extends typetype Name = {name: string;}type User = Name & { age: number};// 3、interface extends typetype Name = {name: string;}interface User extends Name {age: number;}// 4、type extends interfaceinterface Name {name: string;}type User = Name & {age: number;}7.2、不同点
- type 可以而 interface 不行
// 基本类型别名type Name = string// 联合类型interface Dog {wong();}interface Cat {miao();}type Pet = Dog | Cat// 具体定义数组每个位置的类型type PetList = [Dog, Pet]type 语句中还可以使用 typeof 获取实例的 类型进行赋值
// 当你想获取一个变量的类型时,使用 typeoflet div = document.createElement('div');type B = typeof div其他骚操作
type StringOrNumber = string | number;type Text = string | { text: string };type NameLookup = Dictionary<string, Person>;type Callback<T> = (data: T) => void;type Pair<T> = [T, T];type Coordinates = Pair<number>;type Tree<T> = T | { left: Tree<T>, right: Tree<T> };