Because TypeScript is a superset of JavaScript, it natively supports let and const. Below we will elaborate on these new declaration methods and why they are recommended to replace var.
In ts, when declaring a variable, you can specify its type at the same time, the format:
var name: string = 'Forrest';
这样,当
name = 1;
会报错,因为name已经指定了string类型
Specify variable type:
var name: any = 'Forrest';
Note that even if it name
is specified as a string
type, the number 1 cannot be copied in ts, but no error will be reported after being compiled into js.
The parameters and return values of functions can also declare types:
function getAge(name:string) :number{
return 18;
}
The return value type is declared number
, if an return ‘18’
error will be reported, the return value type can bevoid
Declare a custom type:
class Person {
name: string;
age: number;
}
var Forrest: Person = new Person();
Way of variable declaration
布尔类型
var bool:boolean = true;
数字类型
var num:number = 123;
字符串类型
var str:string = '123';
数组类型
var arr:Array<number> = [1,2,3]; 尖括号内为数组内容的类型
var arr0:Array<any> = ['str',2,true];
var arr1:number[] = [1,2,3]; 中括号表示数组;前面的修饰表示类型
var arr2:any[] = ['str',1,true];
元组类型
tuple属于数组类型的一种
var arr:[number,boolean] = [1,true]; 必须要一一对应
枚举类型
enum Err{
undefined=1,
null,
"str" = 2 //此处值和null冲突竟然没有报错;
}
var e:Err = Err.null;
console.log(e)//2
var e1:Err = Err.undefined;
console.log(e1)//1
var e2:Err = Err.str;
console.log(e2)//2
//enum 后面自定义变量名;如果没有声明值;默认为下标、前面的声明了值之后后面的加1
任意类型
let an:any = 12;
任意类型
let an:any = 12;
undefined、null类型
let num:undefined ;
let num1:undefined ;
let num2:number | undefined;
let num3:undefined = undefined;
num2 = 1;
// let num7:null; 此处会报错;未声明为undefined;
let num5:null = null;
let num6:null | number | undefined;
console.log(num,num1,num2,num3,num5,num6)//undefined undefined 1 undefined null undefined;
num6 = null;
console.log(num6);//null
num6 = 55;
console.log(num6);//55
void类型
void即返回值;void表示没有返回值
function run():void{
console.log(123)
};
function main():number{
return 123;
}
never类型
never类型为其他类型(包含其他所有类型)的子类型;表示不会出现的
var a:never ;
a = function(){
throw new Error('err')
}()