这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
动态类型语言
- 动态语言(弱类型语言) 是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等。
var s ="hello";
var i = 0;
var b = true;
静态类型语言
- 静态语言(强类型语言) 是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须声明数据类型。比如Java、C、C++、C#等。
String s="hello"; //String 类型的变量
boolean b=true; //boolean 类型的变量
int i=0; //int 类型的变量
强定义类型语言
强制数据类型定义的语言。一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它永远就是这个数据类型。比如Java、C、C++、Python、C#等。
弱定义类型语言
数据类型可以被忽略的语言。一个变量可以被赋不同类型的值,它该变量可以根据环境变化自动进行转换。比如Php、Asp、JavaScript、Perl等。
弱定义类型语言栗子:
var A=5;
var B="5"
sumA=A+B;
sumB=A-B;
sumA=55,系统默认+字符连接符,将A转化为字符串类型;而sumB=0;系统认为-是算数运算符,从而将B转化为int类型,所以sum为5-5=0。
TypeScript相较于JavaScript的优势
TypeScript是静态类型语言
- 可读性强
- 可维护性强,在编译阶段可以将大部分错误暴露出来
TypeScript是JavaScript的超集
基本语法
基础数据类型
对象数据类型
函数类型
函数重载
数组类型
Record<K,T>
构造具有给定类型T
的一组属性K
的类型。它会将一个类型的所有属性值都映射到另一个类型上并创造一个新的类型,因此在将一个类型的属性映射到另一个类型的属性时,Record
非常方便。
补充类型
泛型
function identity<T>(arg: T): T {
return arg;
}
/* 调用函数 */
identity<string>('hello');
可以理解成:定义了一个T的变量,类型不确定,在函数执行过程中才确定。
类型别名 & 类型断言
字符串/数字 字面量