在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
ts中数据类型的定义是重点之一,所以必须明确ts有哪些数据类型
1.布尔类型 最基本的数据类型就是简单的true/false值,在JavaScript和TypeScript里叫做 let isDone: boolean = false; 注意:在js中,除了false和true.,比如:true可以用其他的数据类型的数据去替换而实现统样的效果,所以我们常常并没有特意去计较它是不是真的布尔值.比如 var a=true if(a){ console.log(a) } a=1 if(a){ console.log(a) } 而ts中则不允许非同类型的数据进行赋值,后续的隐患就少了很多
2.数值(数字)类型 和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; 对比与js,绝大部分的数据类型转换的方式,只要等号右边的返回值是数值都可以,但并不是所有,至少有一个(true-1)不能用于给ts中的number类型变量赋值
3.字符串 let a:string='6' let b:boolean=true a=7+'' a=b.toString() 基本的转化也能拿来赋值.同时也允许模板字符串赋值 let a:string='6'
let b:string='你真是'
let c:string=`我觉得${b}${a}${a}的`
4.null和undefined TypeScript里, let a:null=null let b:undefined=undefined 但是,默认情况下
tsc [filename] --strictNullChecks
5.数组 TypeScript像JavaScript一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 let list: number[] = [1, 2, 3]; 第二种方式是使用数组泛型, let list: Array<number> = [1, 2, 3]; 可以明显的看出,无论哪种方式,都定义了元素的数据类型.所以,只要是符合定义的元素,无论string,number,boolean,只要是单一的类型,都是可以在数组里的.但是只要存在不符合的就报错
6.元组. 如果说数组是单一类型的元素组成的数组,那元祖就包括除此之外的数组 let a:[string,number];
a=['1',1]
申明与赋值规则如下 (1)定义时,每个位置上的元素数据类型都必须声明.同时赋值时要一一对应 (2)申明时的数据类型申明不会改变,所以在浅拷贝时也会先验证拷贝对象是否符合当前申明,不符合不给拷贝. 注意:官网有说可以越界查询.所有后续需要再确认一下 但我在实际试验的时候,并不能越界.具体原因后续再调查
7.枚举
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
但是,它自己本身不能作为值被赋予
// 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); } // 推断的返回值类型为never function fail() { return error("Something failed"); } // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }
11.Object
使用 declare function create(o: object | null): void; create({ prop: 0 }); // OK create(null); // OK create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error
12.类型断言 这个准确来说不是一种数据类型,而是类似数据转换.也就是说,你前面给某个数据定好类型了,但是后面明确了它是另一种类型,这时候就可以使用类型断言告诉ts,你不用在这里限制我了,我知道自己在做啥,我先转换,然后你再监听.在举例子之前我们先要明白一点,'访问联合类型值的属性时,这个属性必须是所有可能类型的共有属性'.什么意思呢?比如: 当创建函数的时候,val定义的数据类型是既有可能是string,又有可能是number,而number.length是错误的,不存在的.所以ts就会提醒你"程序员,你这里写的是不是有问题?" 那么这时候用类型断言,就是告诉ts,这里使用.length的时候是string类型的,我知道.换句话说,你也可以理解成一种类型选择,if(val的类型是string)就.length.
|
请发表评论