Ts的类型和类型声明

Ts的类型和类型声明

Ts的类型声明

先声明变量 再赋值

let a : boolean ;
a = false;

声明的同时进行赋值

let b : number = 2;

这算是第二种的简写 因为声明和赋值同时进行的话 ts会自动为我们进行声明

let c = false;
// c = 1;//此时也会报错

函数的参数声明和返回值类型声明

//js中的函数是不会考虑参数的数量和类型的
function fun(num1:number,string1:string):string {//最后一个string是该函数的返回值
    console.log(`${num1}${string1}`);
    return `${num1}${string1}`
}
fun(1,"number");

Ts的类型

字面量进行类型声明

//字面量进行类型声明
let a : 10;
// a = 11;//此时a就只能等于10不能再是其它值

可以使用 | 连接多个类型(联合类型)

let b : "sex" | "girl";
// b = 10;此时b就不能再等于其他值,要么是sex要么就是girl
let c : boolean | string;//这样写也可以要么是布尔值要么是字符串类型
// c = true; c = "haha"; c = 12;//不能为数字

any 表示任意类型

//any表示任意类型 一个变量设置any相当于对该变量关闭ts的类型检测 不建议使用
let d : any;
let e;//声明变量不指定类型,则ts解析器会自动判断变量的类型为any(隐式的any)
d=10; d="as"; d=true;

unknow 表示未知类型

//unknow 表示未知类型 是一个类型安全的any 不能直接赋值给其它变量
let f : unknown;
f=10;f="as";f=true;
let s :string;
s =d;//any可以将任意值都赋给其它变量 所以很危险不仅搞自己还把别人也搞了
// s = f;//unknow就不行,此时会有下波浪线提示
//unknow我们可以通过下面的语法进行赋值
//第一种通过判断
if(typeof f === "string"){
    s = f;
}
//第二种通过断言
s = f as string;
//第三种<>
s = <string>f;
//表达意思是一样的 都是表达当f为string时才给s赋值

void用来表示空

//void用来表示空,以函数为例,表示没有返回值的函数
function fun():void {
    // return 123;//此时再返回就会报错
}

never表示永远不会有返回结果

//never 表示永远不会返回结果
function fun2() : never {
    throw new Error("直接报错!");
    //像这种直接报错没有返回值的
}

object

// object 表示一个对象 但是在js中万物皆对象 function array等
let obj : object;;
obj = {};obj = function () {};
/*
* {}用来指定对象中可以包含那些属性
* 语法:{属性名:属性值,属性名:属性值}
* 在属性名后边加上?,表示属性是可选的
* [propName:string]:any表示可以任意类型的属性 any换成number表示其余类型的值只能是数字
* */
let obj2 : {name:string,age?:18};
obj2 = {name:'ad'};//此时age就可写可不写
let obj3 :{name:string,[propNmae:string]:any};
obj3 = {name:'sda',age:18,sex:'男'};

函数参数类型

/*
* 设置函数结构的类型声明
* 语法:(形参:类型,形参:类型...) => 返回值的类型
* */
let fuc : (a:number,b:string) => string;
fuc = function (n1,n2):string {
    return "asd";
};

数组

/*
* 数组
* 语法:类型[];
*      Array<类型>
* */
let arr : string[];//表示字符串数组
let arr2 : number[];//表示数值数组
let arr3 : Array<number>;//这种方式跟上面那种相同

元组 固定长度的数组 tuple

/*
* 元组,固定长度的数组 tuple
* */
let ya :[string,string];//长度为2类型为字符串的数据

枚举

/*
*enum 枚举
* */
enum Gender{
    Male,//这里相当于0
    FeMale,//这里相当于1
}
let eu : {name:string,gender:Gender};
eu = {
  name:'asd',
  gender:Gender.Male,
};
// console.log(Gender.Male);//此时输出为0

&同时

//&表示同时
let j : {name:string} & {age:number};//此时要同时满足name为string类型age为number类型
j = {name:'jsjsj',age:18};//必须要有name和age少一个或者类型不对都会报错

类型的别名

type myType = 1 | 2 | 3 | 4 | 5;
let t : myType;//此时1 | 2 | 3 | 4 | 5这串太长而且可能很多地方都会使用此时我们就可以使用别名
let t2 : myType;
type myType = {
	name:string,
	age:number
};
const obj:myType = {
	name:"asa",
	age:18
};
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TS(TypeScript)是一种静态类型检查的高级编程语言,它是JavaScript的超集。在TS中,基础类型和泛型都是其重要的概念。 基础类型指的是TS中预定义的简单数据类型,例如:number、string、boolean、null、undefined等。基础类型用于表示变量或函数的数据类型,可以直接赋值给变量,也可以用作函数的参数和返回值类型。基础类型的定义和使用非常简单,只需要在变量或函数的类型声明中指定即可。 泛型(Generic)是一种在编程中广泛使用的概念,它允许我们在定义函数、类或接口时使用可变的类型。使用泛型可以提高代码的复用性和灵活性。在TS中,使用<>符号来声明使用泛型,并通过类型参数来指定具体的类型。 例如,定义一个泛型函数: function identity<T>(arg: T): T { return arg; } 这个函数使用了泛型类型参数T,可以接受不同类型的实参,并返回相同类型的值。通过使用泛型,我们可以传入任意类型的参数,而不需要重写多个函数。 另外,在TS中还可以使用泛型约束来限制泛型类型的操作。通过在泛型类型参数后面添加extends关键字和约束类型,可以确保传入的类型必须满足特定条件。 总结起来,TS中的基础类型和泛型都是为了增强代码的可读性、可维护性和可靠性而设计的。基础类型用于定义简单的数据类型,而泛型则用于创建更灵活和可复用的函数、类和接口。在实际开发中,合理使用基础类型和泛型,可以提高代码的质量和开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值