您现在的位置是:首页 >技术杂谈 >TypeScript类型网站首页技术杂谈
TypeScript类型
简介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编译器会自动判断变量的类型。所以如果你的变是的声明和赋值时同时进行的,可以省略掉类型声明。
类型
类型 | 例子 | 描述 |
---|---|---|
number | 1,-33,2.5 | 任意数字 |
string | *hi’, “hi”, hi | 任意字符串 |
boolean | true、false | 布尔值true或false |
字面量 | 其本身 | 限制变量的值就是该字面量的值 |
any | * | 任意类型 |
unknown | * | 类型安全的any |
void | 空值(undefined) | 没有值 (或undefined) |
never | 没有值 | 不能是任何值 |
object | {“key”:“value”} | 任意的]S对象 |
array | [1,2,3] | 任意]S数组 |
tuple | [4,5] | 元素,TS新增类型,固定长度数组 |
enum | enum(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 = [1, 2,3];
//元组,元组就是固定长度的数组
//语法:[类型,类型,类型]
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;
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。