您现在的位置是:首页 >技术杂谈 >TypeScript类型网站首页技术杂谈

TypeScript类型

白鹭凡 2024-07-10 06:01:02
简介TypeScript类型

TypeScript 是什么?

  • 是以avaScript为基础构建的语言
  • 个一JavaScript的超集。
  • 可以在任何支持JavaScript的平台中执行。
  • TypeScript扩展了JavaScript,并添加了类型。
  • TS不能被JS解析器直接执行,需要编译成js。

基本类型

声明完变量直赴进行赋值
let c: boolean = false;

如果变量的声明和赋值是同时进行的,TS可以自动对变量进行类型检测
let c = false;
c = true;

JS 中的函数是不考虑参数的类型和个数的

function sum(a, b){
	return a + b;
}
sum( 123, 456); // 579
sum( 123, "456"); // 123456

如果是ts,参数类型限制,个数也有限制
在参数小括号后面加类型设置函数的返回值

function sum(a:number, b:number):number{
	return a + b;
}
sum( 123, 456); // 579 
自动类型判断

。 TS拥有自动的类型判断机制
。当对变量的声明和赋值是同时进行的,TS编译器会自动判断变量的类型。所以如果你的变是的声明和赋值时同时进行的,可以省略掉类型声明。

类型

类型例子描述
number1,-33,2.5任意数字
string*hi’, “hi”, hi任意字符串
booleantrue、false布尔值true或false
字面量其本身限制变量的值就是该字面量的值
any*任意类型
unknown*类型安全的any
void空值(undefined)没有值 (或undefined)
never没有值不能是任何值
object{“key”:“value”}任意的]S对象
array[1,2,3]任意]S数组
tuple[4,5]元素,TS新增类型,固定长度数组
enumenum(A. B)枚举,TS中新增类型

使用

// 字面量
let a:10;
a = 10;// a只能等于 10.

let sex : "male" |"female";
sex = "male"
sex = "female" // sex 只能等于这两个值

// any 表示的是任意类型,一个变量设置类型为any后相当于对该变量关闭了TS的类型检测// 使用TS时,
let d: any;
// 声明变如果不指定类型,则TS 解析器会自动判断变的类型为any(隐式的any)
let d;
d = 10;
d = 'hello';
d = true;

let e:unknown;
e = "hello"
e = 10
e = false;
let s :string// d的类型是any,它可以赋值给任意变量
s = d;
e = 'hello';
// unknown 实际上就是一个类型安全的any。 unknown美型的变量,不能直接赋值给其他交量。
// 解决1:可以通过判断类型来解决赋值
if(typeof e ==="string"){
	s =e;
}
// 解决2:类型断言,可以用来告诉解析器变最的实际类型
s = e as string; // 语法1:变 as 类型
s = <string>e;   // 语法2:<类 变量

// never 表示永远不会返回结果
function fn2(): never{
	throw new Error(报错了!);
}

//  用来指定对象中可以包含哪些属性
// 语法: {属性名: 属性值,属性名: 属性值}
// 在属性名后边加上?,表示属性是可选的
let b: (name: string, age?: number};
b = {name:孙悟空,,age: 181};
// [propName: string]: any 表示任意类型的属性
let c: (name: string, [propName: string]: any}
c ={ name:'猪八戒',age: 18,gender:'男'; }

//设置函数结构的类型声明:
//语法:(形参: 类型,形参: 类型 ...) => 返回值

let d: (a: number ,b: number)=>number;
d = function (n1: number ,n2: number ): number{
	return 10;
}

// 数组的类型声明:
//语法1: 类型[]
// 语法2:Array<类型>
// string[] 表示字符串数组
let e: string[];
e = ['a','b','c'];
let g: Array<number>;
g = [123];

//元组,元组就是固定长度的数组
//语法:[类型,类型,类型]
let h: [string, number];
h = ['hello'123];

enum Gender{
 Male =0
 Female = 1
}
let i:{name: string,gender: Gender)
i={
	name:"zhangsan",
	gender:Gender.Male // 0
}
console.log(i.gender === Gender.Male)

补充

// &表示同时要满足
let j: { name: string } & { age: number };
// j = {name:"孙悟空",age: 181}

// 美型的别名
type myType = 1 1 2 1 3 1 4 1 5;
let k: myType;
let m: myType;
k =2;

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。