TypeScript 基础数据类型
2020-06-10 本文已影响0人
张思学
TS是JS的超集,JS是一门动态弱类型语言。与之对应的自然有静态类型语言和强类型语言。
在学习一门语言之前是值得花时间去区分类型之间的区别。
强类型语言
在强类型语言中,当一个对象从调用函数传递到被调用函数时,其类型必须与被调用函数中声明的类型兼容。
弱类型语言
变量可以被赋予不同的数据类型。
静态类型语言
静态类型语言对类型极度严格,所以代码可读性好,能自文档化,编译时就能立即发现错误并提示,所以运行的时候性能比较好。
动态类型语言
动态类型语言对类型要求极度宽松,从而也会出现代码可读性较差,也有可能出现一些隐藏的Bug
在JS中,数据类型是存在隐式转换的。以下面的简单代码为例
let name = '小明同学';
name = true
console.log(name) // true
TS 的基础数据类型介绍
Number(数值型)
可以是整型、浮点型、还有各种进制型等等
String(字符串)
可以用单引号、双引号、反引号括着
boolean(布尔型)
只能有 true 和 false
array(数组类型)
[1, 2, 3, 4, 5]
tuple(元组类型)
和数组类似,但是元组中的数据类型顺序、长度必须和规定的类型顺序、长度对应起来。
enum(枚举类型)
一个枚举可以包含零个或多个枚举成员,枚举成员具有一个数字值,它可以是常数或计算得出的值,如果没有初始化就会被当作常数,这是第一项为0,其余为前一项加一。
void (void类型)
ts中void表示没有任何类型,一般用于定义方法的时候方法没有返回值
never(never类型)
是其他类型(包括 null 和undefined )的子类型,代表从来不会出现的值,这意味着never的变量只能被never类型赋值,比如 var a : undefined ; a就只能被赋值undefined
any(任意类型)
任意类型不建议使用,就和js一样了
Ts标准写法
在变量名后,会有一个类型注解。这个类型注解相当于强类型语言中的类型声明,能起到一定的约束作用。
let num: number = 20; // 数值型
let str: string = 'hello ts'; // 字符串
let t: boolean = true; // 布尔型
let array: number[] = [1, 2, 3, 4, 5, 6] // 数组类型
let array:Array<string> = ['a', 'b', 'c'] // 数组类型
let array: (string | number)[1,2,'0']; // 数组类型
let tuple: [string, number, boolean]; // 元组类型
tuple = ['1', 2, true];
// 枚举类型
enum CarStatus{
ON_lINE,
OUT_LINE = 2,
WARNING
}
console.log(CarStatus)
// 不能有返回值 return
const playFunc = (srt: string): void => {
console.log(srt);
}
let anything: any; // 任意类型