TypeScript基础

 安装 TS

命令:

只写tsc 转化js    tsc加文件名 生成 js文件

cls 清屏

export default

tsc --init  //修改tsconfig文件

tsc --watch  自动生成js文件

 

 数组的基本类型

export default {}

// 数组的基本类型
let text: string[]; //字符串类型
text = ["www", "www"]
// text=[123,432] 

let numArray: Array<number>; // 数字类型
numArray = [1, 2, 3, 4]
// numArray =["sss"]

let num: (number | string | boolean)[]; // 柱状  (联合数据类型)
num = [22, 4, 3, 534, "dsdsd", false]

// 任意类型 (不建议用 )
let ren: any[]
ren = ["www", "www", true, 3, 4, 5]

元组

1.元组类型Tuple

2.TS中的元组类型其实就是数组类型的扩展

3.元组类型用来表示一直元素数量和类型的数组,各元素的类型不必相同,对应的位置的类型需要相同

export default {}
// 元组类型
let tup1: [string, boolean, number]
tup1 = ["sss", true, 23]
// tup1=["sss",23,true]

作用: 元组用于保存定长定数据类型

 any的场景

export default {}
// 场景一
let temp: any; //变量的值会动态改变时,比如来自用户的输出,任意值类型可以让这些变量跳过阶段的类型检查
temp = "字符串";
temp = true;
temp = 123;
// // 场景二
let x: any = 4;
console.log(x.toFixed())
// // 场景三
let arr: any[] = ["张三", 12, true];
console.log(arr[2]);

void类型

let test1: void;
// test1="张三";
// test1=23;
// test1=true;
test1 = null;  //修改  "target": "es2020     "strict": false, " 
test1 = undefined;

 null与undefined

undefined与null两者各自有自己的类型分别叫做undefined 和null 与void相似,他们本身的类型不是很大

非严格模式下可以把null和undefined赋值给nullber类型的变量

export default {}
//     类型         值  
let x: undefined = undefined;
let y: null = null;
// x="刘亦菲"
// x=20
let money: number = 20;
money = null
money = undefined

Never类型   Object类型

never类型表示的是那些用不存在的值的类型;

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

变量也可能是never类型,当他们被永不为真的类型保护所约束时

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

// export default {}
// function error(message: string) {
//     throw new Error(message)
// }
// error("挂掉了~~~~")

// function fail() {
//     return error("GGG了~~~~")
// }
// fail()

// object类型
let goddess: object;
goddess = { name: '张三', age: 34 };
console.log(goddess);

枚举

 

 第一种:

enum Gender {
    Male,
    Female
}
let gender: Gender;
// gender = Gender.Male
gender = Gender.Female
// console.log(gender); //0
console.log(gender); //1

第二种 赋值(给第一个赋值第二个就会以此类推   下标)

enum Gender {
    Male = 1,
    Female
}
console.log(Gender.Male) //1
console.log(Gender.Female)//2

 第三种  (给第二个赋值,第一个就会为0    下标)

enum Gender {
    Male,
    Female = 9
}
console.log(Gender.Male) //0
console.log(Gender.Female)//9

 第四种 (给两个赋值   效果如下!!!)

enum Gender {
    Male = 100,
    Female = 99
}
console.log(Gender.Male) //100
console.log(Gender.Female)//99

第五种  (直接输出字面量  或者 下标 )

enum Gender {
    Male, //字面量
    Female
}
console.log(Gender.Male) //0
console.log(Gender[0])//Male

第六种 (调用函数)

enum Gender {
    Male,
    Female
}
let getNum = () => 200
let gender: Gender;
// gender = Gender.Female;
// gender = "100"; //不可写字符串
gender = getNum();
console.log(gender) //200

 第七种 (字符串枚举)

enum Direction {
    Upp = "Up",
    Downn = "Down"
}
console.log(Direction.Upp);
console.log(Direction.Downn);
// console.log(Direction[0]); //undefined

第八种 (异步枚举)枚举中既包含字符串也包含数字

注意点:如果是字符串枚举,那么无法通过原始值获取到枚举值

// 3。异构枚举
enum Gender {
    Male = 1,
    Female = "女"
}
console.log(Gender.Male); //1
console.log(Gender.Female);//女
console.log(Gender[1]); //Male
// console.log(Gender['女']); //undefined

bigint与symbol             "target": "es2020" 可用

bigint( )类型表示非常大的数   

export default {}

let num1: bigint = BigInt(100);
let num2: bigint = 100n
console.log(num1); //100n
console.log(num2); //100n

symbol 表示全局唯一引用

export default {}

let num1: bigint = BigInt(100);
let num2: bigint = (100n)
console.log(num1); //100n
console.log(num2); //100n

let firstName = Symbol("name");
let seciondName = Symbol("name");

if (firstName === seciondName) {
    console.log("ok");
} else {
    console.log("no");

}

 变量声明与解构

数组解构

export default {}
let get = ["张三", "赵四"];
let [zhangsan, zhas] = get
console.log(zhangsan)
console.log(zhas);

let get1 = ["张三", "赵四", "王五", "赵六"]
let [wangwu, ...zhaoliu1] = get1
console.log(wangwu)
console.log(zhaoliu1);

let get2 = ["张三", "赵四", "王五", "赵六"]
let [, zhaosi, , zhaoliu] = get2
console.log(zhaosi)
console.log(zhaoliu)

对象解构

export default {}
// 对象解构
let get3 = {
    name: "张三",
    age: 18,
    sex: "女"
}
let { name, age, sex } = get3;
console.log(name);
console.log(age);
console.log(sex);

 类型断言

语法格式   1. <类型> 值   2. 值 as 类型  

// 类型断言
export default {}
// // 语法格式 <数据类型>值    值as 数据类型
let str = "世界上最遥远的距离就是,你是if而我是else,似乎一直相伴但又永远相离"
let len = (<string>str).length;
console.log(len);
let sum = (str as string).length
console.log(sum);
// 函数
function fn(x: string | number) {
    let str = (x as string).length
    console.log(str);

}
fn("世界上最遥远的距离就是,你是if而我是else,似乎一直相伴但又永远相离")

 案例 判断是否为 string 或 number 类型

function fn(x: string | true) {
    if (typeof x == "string") {
        let str = (x as string).length;
        console.log(str);

    } else {
        console.log(x);

    }
}
fn(20)

type别名

类型别名就是给一个类型起个新名字,但是他们都代表同一个类型

    export default {}

    type beautys = "张三" | "赵四" | "王五" | "老六";
    let one: beautys;
    // console.log(one); undefined
    one = "张三";
    // one= "sss"; //报错
    // one="六七" //报错
export default {}

// 定义别名
type myFun = (a: number, b: number) => number
// 声明具体函数
let num: myFun = (a: number, b: number) => a + b
// console.log(num);
// 调用
num(10, 20);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值