类型别名_字符串字面量类型_元组

  • html

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>类型别名_字符串字面量类型+元组</title>
        <script src="type.js"></script>
    </head>
    <body>
    </body>
</html>
  • ts

//类型别名与字符串字面量类型都是使用 type 进行定义
//类型别名:用来给一个类型起个新名字--常用于联合类型
type Str = string;//给string类型起个别名为str
type Num = number;//给number类型起个别名为num
type StrOrNum = Str|Num;//给string|number的联合类型起个别名为strOrNum
function getNameOrAge(value:StrOrNum){
    if((typeof value)=='string'){
        return `name:${value}`;
    }else{
        return `age:${value}`;
    }
}
console.log(getNameOrAge('纪宁'));
console.log(getNameOrAge(80));


//字符串字面量类型
type ColorType = 'red'|'green'|'blue';//如果let color:ColorType,那么color的值只能取这几个
function getColor(color:ColorType){
    return color;
}
console.log(getColor('red'));//red
// console.log(getColor('red1'));//error


/**
 * 在元组之前,先试一下普通的数组
 * 通过下面的试验可以发现普通数组里面如果有不同类型的元素,则取到某个元素之后,只能调用这个数组中所有类型的公共方法,不能识别当前元素的类型
 * 如果要调用当前元素对应类型的方法,可以通过类型断言来实现
 */
let com = ['hello',1];//com[0或1]只能调用toString()和valueOf(),因为这是string类型和number类型公共的方法
let com2 = ['hello',[1]];//com[0]可以调用string类型和数组公共能调用的方法
let tmpCom = (com[0] as string).toUpperCase();//类型断言,还可以这种形式<string>com[0]
console.log(tmpCom);

//元组:确定长度,确定类型的数组
let yz:[string,number] = ['hello',1];//定义一个长度为2,类型为[string,number]的数组
yz[0].toUpperCase();//这里拿到第0个元素,可以不用通过类型断言,直接就知道是string类型,因此可以直接调用string类型的方法
yz[1].toFixed();

//元组在初始化时(必须要进行初始化),必须为全部的元素赋值
let yz2:[string,number] = ['hello',2];//如果少了或者多了都报错
//注:以下这种方式也属于初始化
let yz22:[string,number];
yz22 = ['hello',1];//初始化:因此需要全部赋值
// yz22 = ['hello'];//不全赋值报错

//对于这种语法不确定的,可以查看编译完成的js文件,如这个地方从js文件中就可以看出来:let yz222;yz222[0] = 'fds',由此可见肯定是错误的
// let yz222:[string,number];//这里虽然不会报错,但其实这里语法是错误的,只是说yz222是个[string,number]的类型,但变量并没有初始化,是个undefined,所以没法访问第0个,
// yz222[0] = 'fds';

//越界的元素:它的类型会被限制为元组中每个类型的联合类型
let yz4:[string,number] = ['hello',4];
yz4.push('world');//OK
// yz4.push(true);//error
// yz4[5] = 'f';//这里语法报错,但是又可以在浏览器上运行出来,看type.js文件中语法没问题,应该是解析器的问题
// console.log(yz4);//["hello", 4, "world"]
// console.log(yz4.length);//3
// console.log(yz4[2]);//同上可以在浏览器运行出来

 

TypeScript具有丰富的类型系统,可以帮助开发者在编码过程中捕获错误、提供代码补全和自动提示等功能。以下是一些常见的 TypeScript 类型: 1. 原始类型: - boolean: 布尔类型,只能是 true 或 false。 - number: 数字类型,包括整数和浮点数。 - string: 字符串类型。 - null 和 undefined: 分别表示空值和未定义值。 2. 数组类型: - 基本数组类型:例如 number[] 表示数字数组,string[] 表示字符串数组。 - 泛型数组类型:使用泛型语法定义特定类型的数组,例如 Array<number> 表示数字数组。 3. 元组类型: - 元组是固定长度和特定类型的数组。 - 例如 [string, number] 表示包含一个字符串一个数字的元组。 4. 对象类型: - 对象类型可以使用字面量语法定义,例如 { name: string, age: number } 表示一个具有 name 和 age 属性的对象。 - 也可以使用接口(interface)或类(class)定义对象类型。 5. 函数类型: - 函数类型包括参数的类型和返回值的类型,例如 (a: number, b: number) => number 表示接收两个数字参数并返回一个数字的函数类型。 6. 枚举类型: - 枚举用于定义一组命名的常量值。 - 例如 enum Color { Red, Green, Blue } 定义了一个颜色的枚举类型,可以通过 Color.Red、Color.Green 等访问枚举值。 除了以上类型TypeScript 还支持联合类型、交叉类型类型别名类型推断和泛型等高级特性,可以更灵活地应对各种编程场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值