布尔值,数字,字符串
先定义类型再赋值相同通过,不同报错
布尔
let d:boolean;
d=true
//d="" //报错
d=100<200
console.log(d)
数字
var a=100;
let b=200;
const c="hello"
var e:number=200 //指定e变量的类型是number, 以后这个变量只能保存number类型的数据
e=a
e=c;//报错
有类型推论概念:a没有设定类型 在初始化之后 系统会为之设定一个类型:这个过程就是类型推论
let a=200;
//等价于let a:number=20;
0x,0b,0o,十六,二,八进制都会编译成十进制
模板字符串用法:
let myName: string = 'karen';
let myAge: number = 25;
// 模板字符串
let str: string = `Hello, my name is ${myName}.
I'll be ${myAge + 1} years old next month.`;
console.log(str);
void
let a:void
function fn(): void { //void,无效的,表示没有任何类型
//void类型的变量只能为它赋予undefined和null
}
function fn2():number{
return 100
}
fn2()
console.log(fn2());
undefined
undefined的类型不能赋值其他只有一个undefined但其他的可以赋值undefined
// undefined
let a:undefined;
a = undefined;//undefined类型的数据只有一个值就是undefined ,可以赋值给void类型
let b: number = 200
// a = b; //报错
b = a; //严格模式报错
console.log(b); //undefined
let c: void;
//a = c;//报错
c=a;
console.log(c); //undefined
null
和undefined一样null类型的数据只有一个值就是null,可以赋值给void类型
联合类型:
type Mytype1=number|string|boolean
数组定义:
// 数组
let arr: number[] = [1, 2, 3,] //只能是数字类型其他报错
let arr1: Array<string | number> = ['123', 123]
// arr.push("2")//报错
arr.push(2)//通过
arr1.push(2,"222")
console.log(arr,arr1);
// 区分
let arr2:number|string[];
// arr2=[20,"hello"] //报错
arr2=200
arr2=["hello"]
console.log(arr2)
let arr3:(number|string)[];
arr3=[20,"hello"]
// arr=200//报错
arr3=["hello"]
console.log(arr3)
元祖,解构赋值
只能读取
let arr:[number,string]=[100,"hello"]//不是解构
let [n,x]=[100,"hello"]//是解构
//解构的隐式代码:let n=x[0] let s=x[1]
console.log(n)
枚举:
enum Gender {Secret, Male, Female};
console.log(Gender.Male);
Any任意值 never不存在的
接口:
interface RichMan{
money: number,
age: number,
readonly fistname:string, //只读
// name?:string //可选
[pro:string]:any 成员名任意,值任意
}
let p: RichMan;
p = { age: 19, money: 1000 }
p.age = 200
// p.name="jack"
console.log(p);