const hello : string = 'haha';
const a : number = 7;
let b:boolean = false; // 声明并定义
let c = 4; // d声明为number类型
console.log(hello, a);
// ah函数的返回值是string类型的
function ah(c: number,d:string):string {
return '2';
}
ah(3,5); // 报错
// 自变量
let h:10; //h只能是10了
h=11; // 报错
// 联合类型
let j: '你好' | 'yaya'; //j的值只能是这俩中的一个
j = 'huhu'; // 报错
let g:boolean | string
let q: any; // 变量q 关闭ts的类型检测
q = 1;
q = 'ad';
q = true;
a = q; // 可直接赋值给其他变量,并改变对应变量的类型,a变量现在是any类型
let w:unknown; // 未知的,并不能直接赋值给其他变量
w = 2;
c = w; // 报错
if (typeof w === 'number') {
c = w; // 已经知道的就可以赋值
}
let e:unknown;
e = true;
b = e; // 报错
// 类型断言,告诉编译器这个变量e就是这个类型的
b = e as boolean; // 另外一种写法 b = <string>e;
// 函数无返回值
function qw(): void{
return true; //报错,可以是return null;或者无return
}
// 绝无返回值,连null都不能有
function we(): never{
// return null; // 报错了
throw new Error('报错了');
}
// 对象
let p: {
name: string,
age?: number // ?是指可选的
}
p = {
name: 6, ///报错
}
let o:{
name: string,
[x:string]:any // 剩余变量是任意类型
}
o = {
name: 'sd',
age: '12'
}
// 函数,x,y 是参数 number类型, 返回的值也是number类型
let u:(x:number, y:number) => number;
u = function(n1, n2) {
return n1 + n2
}
u(2,'5'); //报错
//数组元素都是字符串
let y:string[];
y = ['2',4,'haha']; // 报错
let t:number[];
t = [2,4,5];
// 元组,固定长度的数组
let r: [string, number];
r = ['2', 'T']; // 报错
// 枚举
enum Sex {
Male,
Femate,
Sec
}
let l: { name: string, sex: Sex};
l = {
name: 'nuzhen', sex: Sex.Male
};
console.log(l.sex === Sex.Sec );
// & 与
let g = {name: string }&{age:number};
g = {name:'muz',age:12};
// 别名
type typsource = 1|2|3|4;
let k = typsource;
console