• TypeScript基础


     安装 TS

    命令:

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

    cls 清屏

    export default

    tsc --init  //修改tsconfig文件

    tsc --watch  自动生成js文件

     

     数组的基本类型

    1. export default {}
    2. // 数组的基本类型
    3. let text: string[]; //字符串类型
    4. text = ["www", "www"]
    5. // text=[123,432]
    6. let numArray: Array; // 数字类型
    7. numArray = [1, 2, 3, 4]
    8. // numArray =["sss"]
    9. let num: (number | string | boolean)[]; // 柱状 (联合数据类型)
    10. num = [22, 4, 3, 534, "dsdsd", false]
    11. // 任意类型 (不建议用 )
    12. let ren: any[]
    13. ren = ["www", "www", true, 3, 4, 5]

    元组

    1.元组类型Tuple

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

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

    1. export default {}
    2. // 元组类型
    3. let tup1: [string, boolean, number]
    4. tup1 = ["sss", true, 23]
    5. // tup1=["sss",23,true]

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

     any的场景

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

    void类型

    1. let test1: void;
    2. // test1="张三";
    3. // test1=23;
    4. // test1=true;
    5. test1 = null; //修改 "target": "es2020 "strict": false, "
    6. test1 = undefined;

     null与undefined

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

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

    1. export default {}
    2. // 类型 值
    3. let x: undefined = undefined;
    4. let y: null = null;
    5. // x="刘亦菲"
    6. // x=20
    7. let money: number = 20;
    8. money = null
    9. money = undefined

    Never类型   Object类型

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

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

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

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

    1. // export default {}
    2. // function error(message: string) {
    3. // throw new Error(message)
    4. // }
    5. // error("挂掉了~~~~")
    6. // function fail() {
    7. // return error("GGG了~~~~")
    8. // }
    9. // fail()
    10. // object类型
    11. let goddess: object;
    12. goddess = { name: '张三', age: 34 };
    13. console.log(goddess);

    枚举

     

     第一种:

    1. enum Gender {
    2. Male,
    3. Female
    4. }
    5. let gender: Gender;
    6. // gender = Gender.Male
    7. gender = Gender.Female
    8. // console.log(gender); //0
    9. console.log(gender); //1

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

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

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

    1. enum Gender {
    2. Male,
    3. Female = 9
    4. }
    5. console.log(Gender.Male) //0
    6. console.log(Gender.Female)//9

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

    1. enum Gender {
    2. Male = 100,
    3. Female = 99
    4. }
    5. console.log(Gender.Male) //100
    6. console.log(Gender.Female)//99

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

    1. enum Gender {
    2. Male, //字面量
    3. Female
    4. }
    5. console.log(Gender.Male) //0
    6. console.log(Gender[0])//Male

    第六种 (调用函数)

    1. enum Gender {
    2. Male,
    3. Female
    4. }
    5. let getNum = () => 200
    6. let gender: Gender;
    7. // gender = Gender.Female;
    8. // gender = "100"; //不可写字符串
    9. gender = getNum();
    10. console.log(gender) //200

     第七种 (字符串枚举)

    1. enum Direction {
    2. Upp = "Up",
    3. Downn = "Down"
    4. }
    5. console.log(Direction.Upp);
    6. console.log(Direction.Downn);
    7. // console.log(Direction[0]); //undefined

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

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

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

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

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

    1. export default {}
    2. let num1: bigint = BigInt(100);
    3. let num2: bigint = 100n
    4. console.log(num1); //100n
    5. console.log(num2); //100n

    symbol 表示全局唯一引用

    1. export default {}
    2. let num1: bigint = BigInt(100);
    3. let num2: bigint = (100n)
    4. console.log(num1); //100n
    5. console.log(num2); //100n
    6. let firstName = Symbol("name");
    7. let seciondName = Symbol("name");
    8. if (firstName === seciondName) {
    9. console.log("ok");
    10. } else {
    11. console.log("no");
    12. }

     变量声明与解构

    数组解构

    1. export default {}
    2. let get = ["张三", "赵四"];
    3. let [zhangsan, zhas] = get
    4. console.log(zhangsan)
    5. console.log(zhas);
    6. let get1 = ["张三", "赵四", "王五", "赵六"]
    7. let [wangwu, ...zhaoliu1] = get1
    8. console.log(wangwu)
    9. console.log(zhaoliu1);
    10. let get2 = ["张三", "赵四", "王五", "赵六"]
    11. let [, zhaosi, , zhaoliu] = get2
    12. console.log(zhaosi)
    13. console.log(zhaoliu)

    对象解构

    1. export default {}
    2. // 对象解构
    3. let get3 = {
    4. name: "张三",
    5. age: 18,
    6. sex: "女"
    7. }
    8. let { name, age, sex } = get3;
    9. console.log(name);
    10. console.log(age);
    11. console.log(sex);

     类型断言

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

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

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

    1. function fn(x: string | true) {
    2. if (typeof x == "string") {
    3. let str = (x as string).length;
    4. console.log(str);
    5. } else {
    6. console.log(x);
    7. }
    8. }
    9. fn(20)

    type别名

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

    1. export default {}
    2. type beautys = "张三" | "赵四" | "王五" | "老六";
    3. let one: beautys;
    4. // console.log(one); undefined
    5. one = "张三";
    6. // one= "sss"; //报错
    7. // one="六七" //报错
    1. export default {}
    2. // 定义别名
    3. type myFun = (a: number, b: number) => number
    4. // 声明具体函数
    5. let num: myFun = (a: number, b: number) => a + b
    6. // console.log(num);
    7. // 调用
    8. num(10, 20);
  • 相关阅读:
    猿创征文 |【Ant Design Pro】使用ant design pro做为你的开发模板(二)新增一个页面与如何添加国际化
    超大视频如何优雅切片
    消息队列实现进程之间通信方式
    FPGA数字电子技术复习笔记(一)verilog语法规则补充
    [源码解析] TensorFlow 分布式环境(2)---Master 静态逻辑
    qt 移植到vs后,常见问题汇总????
    【Flyweight模式】C++设计模式——享元模式
    springboot react 代码生成器
    开源不止,创新澎湃 | 2023开源产业生态大会六大专题抢“鲜”看!
    数据安全前沿技术研究小结
  • 原文地址:https://blog.csdn.net/red_HTML/article/details/126718955