前言:
as we all know,JavaScript中并没有特定的为变量或者函数指明类型,这是因为JS没有变量类型的说法,使用typeof运算来判断的是JS变量值的类型,然而这样就可能会让我们不断的改变一个变量的值的类型,这样或许会然我们滥用这一特性,导致代码的可读性和可维护性差,因此出现了typescript,所以站在本人的角度,typescript就是有类型的脚本语言,当然typescript是始于js、终于js的【其实呢,typescript是JavaScript的超集,即一种拓展】
正文:
学过Java/C语言/C++的人都知道一个变量如果声明了类型,那么这个变量就只能拥有属于它自己类型的值,如果直接赋值为其他类型就会存在着错误(这里抛开了类型转化哈)。所以typescript也就给JavaScript拓展了这一项强制的规则,让JavaScript看起来很‘规范’。 【从这里开始typescript就简写ts,javascript就简写为js,你懂的】
一、ts的基础数据类型有
1. 布尔值 boolean 如, let isTrue:boolean = true;
2. 数字 number 如, let num:number = 15;
3. 字符串 string 如, let name:string = 'jake';
4. 数组 []或者Array<元素类型>
如 let arr:[] = [1,2,3] 或者 let arr2:Array<number> =[4,5,6]
5. 枚举 enum
如 enum Baby { baby1,baby2,baby3}; let ybaby:Baby = BaBy[1]
6. 元组类型 主要是使用[类型1,类型2,...]
如 let person:[string,number]; person=['jake',23]
6. 任意类型 any 如: let say:any = 'hi'; say = 2;
7. 无类型 void 如: function fun():void{console.log('xxx')}
8. null 和 undefined类型 //学过js的一看就懂
如: let nu:null = null; let un:undefined = undefined;
9. 不存在值的类型 never类型
官方解释“never类型表示的是那些永不存在的值的类型。
例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式
或箭头函数表达式的返回值类型; 变量也可能是never类型
,当它们被永不为真的类型保护所约束时。”
如:function error(message: string): never {
throw new Error(message);
}
10. 对象类型 object类型 如:let person:object = {name:'jake',age:23}
特别说明:null,undefined,never是任意类型的子类型
二、 变量定义和函数定义
基础类型说完,说说ts的变量定义或者函数定义格式如下:
- 变量定义
var 变量名:变量的类型/let 变量名:变量的类型/const 变量名:变量的类型,
//栗子
var n:number;
number = 3;
//也可以
const num:number = 3;
let num2:number = 3;
- 函数定义
function funcName(参数名:参数类型...):返回类型{
return 'ok'
}
- 特别说明,如果您没有未变量或者函数指定类型或者是返回类型,那么ts就会根据推断来给你默默的指定一个类型
// ts的推断来给你指定类型
var num = 3;
num = 'love you' // Type '"love you"' is not assignable to type 'number'.
//这就是推断!你的num被指定为number类型的了,所以不能够赋值为‘love you’字符类型