基础类型--Ts

//string

// 使用 string表示文本数据类型。 和JS一样,可以使用双引号( ")、单引号(')和反引号(`)表示字符串。总之,和JS的玩法一样。

var names:string = '小王';

var str="hello"//隐式推论 通过复制初始化 推测出string

console.log(names);

//number

// 和JS一样,TS里的所有数字都是浮点数,类型是 number。 支持2、8、10、16等各种进制。

var age:number = 23;

let n2: number = 0xf00d;// ES6 中的十六进制表示法,会被编译为十进制数字

let n3: number = 0b1010;// ES6 中的二进制表示法,会被编译为十进制数字

let n4: number = 0o744;// ES6 中的八进制表示法,会被编译为十进制数字

let n5: number = NaN;

// 只声明不赋值是可以的

let c:number;

//bollean

let flag:boolean = true;

// flag= new Boolean(1);====>类型错误,flag是布尔型的;new Boolean(1)是布尔对象

// 数组

// TS像JS一样可以操作数组元素。 有两种方式可以定义数组。 第一种,可以在元素类型后面接上 [],表示由此类型元素组成的一个数组。

let score:number[] = [1,20, parseInt('50')];//只允许数组中是number类型的

let fruit:Array<string|number> = ['apple', 'banana', 'pear', 20];//数组中可以存放numberstring类型的数据

let arr1: number[] = [1, 1, 2, 3, 5];//正确

// let arr2: number[] = [1, '1', 2, 3, 5];//错误,只能放number类型的数据

//元组

// 元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。

// 数组合并了相同类型的对象,而元组(Tuple)合并了不同类型的对象。

//1.默认值

let tom: [string, number] = ['Tom', 25];

//2.通过下标赋值

let tom2: [string, number] = ['', 0];

tom[0] = 'Tom';

tom[1] = 25;

let arr: [string, number]=["hello",11];

let [m1,m2]:[string,number]=arr;//隐式代码====>m1:string=arr[0],m2:number=arr[1]

// 枚举

// enum类型是对JS标准数据类型的一个补充。 使用枚举类型可以为一组数值赋予友好的名字。

// 枚举类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。

// 枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射,也可以手动的指定成员的数值;

//一周的每天

enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat};

console.log(Days.Sun, Days.Mon, Days.Tue, Days.Sat);

console.log(Days["Sun"] === 0); // true

console.log(Days["Sat"] === 6); // true

//根据编号得到元素名

console.log(Days[0] === "Sun"); // true

console.log(Days[6] === "Sat"); // true

// any

// 有时需要为那些在编程阶段还不清楚类型的变量指定一个类型。

// 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。

// 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这个现象叫做静默。

//  那么我们可以使用 any类型来标记这些变量:

let notSure: any = 4;

notSure = "maybe a string instead";

notSure = false; // okay, definitely a boolean

let anyThing: any = 'hello';

console.log(anyThing.myName);//anyTingmyName属于任意类型

// 任何类型都可以给这个变量赋值

// 常用在函数返回值

// 特点:某种类型的数据可以复赋值给any类型的变量

// any类型编译时会通过,但是运行时可能会出现问题

// 任意类型可以给any类型复赋值

let n1:any;

n1="hello";  //n1赋值hello后还是任意类型

n1=1234

console.log(n1.xxx)//不会报错,因为n1any类型的不是赋值的number类型。所以编译会通过,但是运行时就会报错

// any类型也可以赋值给任意类型

let w:any;

let res:string;

res=w;

// void

// void,无效的,表示没有任何类型。 当一个函数没有返回值时,其返回值类型是 void;

function warnUser(): void {

    console.log("This is my warning message");

}

// 声明一个void类型的变量没什么用,因为你只能为它赋予undefined和null:

let unusable: void = undefined;

// nullundefinde

// undefined和null两者各自有自己的类型undefined和null。 和 void相似,用处不大:

// 可以赋值给任意类型的变量

let w1:null;

// w1=undefined;

let b:number;

b=100;

// b=undefined;// 编译是可以通过的

// 任何类型赋值给null和undefined是不行的

let w2:null;

let b2:number;

// w2=b2;//编译失败

// never

// never类型表示的是那些永不存在的值的类型。

// 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;

// 返回never的函数必须存在无法达到的终点

function error(message: string): never {

    throw new Error(message);

}

// object

// object表示非原始类型,也就是引用类型,是除number,string,boolean,symbol,null或undefined之外的类型,

// 可以使用"对象", "数组对象"、string、number等为其赋值,null和undefined不行的。

//   之所以Object变量可以接收任何对象,是因为Object是所有类的父类。

let a:Object = [1, 2, 3]

let a2:Object={name:"jack",age:20}

// 数组和对象都可以

console.log(typeof null); //打印Object,因为最后是node在运行,object

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、付费专栏及课程。

余额充值