SOURCE

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 命令行工具 X clear

                    
>
console