• 1.TypeScript变量和编译选项


    一:TypeScript是什么

    1.以JavaScript为基础构建的语言

    2.一个JavaScript的超集

    3.可以在任何支持JavaScript的平台执行,但是TS不能被JS解析器直接执行,需要中间商()先将TS编译成JS

    4.TS扩展了JS,并添加了类型

    二:TS增加了什么

    1.TS给变量设置了类型

    2.TS增加很多新的数据类型

    3.支持ES的新特性

    4.添加ES不具备的新特性:抽象类,接口,各种工具,装饰器。

    5.丰富的配置选项:①对类型的控制可以严谨也可以不

    ②指定兼容

    6.强大的开发工具

    三:TS开发环境搭建 和 使用

    1.下载并安装Node.js或者此链接左侧版本

    2.使用npm全局安装typescript:在命令行输入 npm i -g typescript

    安装成功

     3.创建一个ts文件


    但是我们网页不认识.ts文件。 我们需要用编译器tsc将ts转换成js

    4.使用tsc将ts编译成js

     在此文件所在文件夹打开cmd命令行,输入:tsc 文件名.ts    (或者在vscode使用快捷键 ctrl+~ 打开命令行)

     回车,无报错弹出代表成功,此时目录新增

    四:TS的类型声明

    参考此链接

    1.变量类型声明

     上图报错但是可以用tsc解析成js,后续可以添加配置,当代码有错误时,编译js不成功

     

    2.函数参数类型声明

    3.函数返回值类型声明 

    五:TS的变量声明

    1.声明为指定值 :只能为10,此时为11都不行

    1. let a : 10;
    2. a = 10;
    3. //a = 11; 报错,值只能为10

    2.声明用|隔开 :可以使用 | 来连接多个类型(联合类型)

    ①值只能为固定的二者之一

    ②值只能为指定类型的

    3. 声明为any :指定为任意类型,均不报错

    1. let a : any;
    2. //或者 let a; 不写时自动认为时any
    3. a = 1;
    4. a = '哈哈';
    5. a = true

    4. 声明为 : unknown 不确定值类型

    1. let a : unknown;
    2. a = 1;
    3. a = '哈哈';
    4. a = true

    any和unknow(严谨)的区别:

    如果想让any变得更加严谨

    1. if(typeof a === "string"){
    2. x = a
    3. }

    如果想让unknown不报错

    1. (类型断言)
    2. // 写法1
    3. x = a as string;
    4. // 方法2
    5. x = a;

    5.声明为 :void  用于标识方法返回值的类型,表示该方法没有返回值。

    1. function hello(): void {
    2. alert("Hello Runoob");
    3. }

    6. 声明为:never → 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。

    这意味着声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常(程序终止,无返回值)或无法执行到终止点(例如无限循环),示例代码如下:

    1. let x: never;
    2. let y: number;
    3. // 编译错误,数字类型不能转为 never 类型 ;( never ) 是num的子类
    4. x = 123;
    5. // 运行正确,never 类型可以赋值给 never类型
    6. x = (()=>{ throw new Error('exception')})();
    7. // 运行正确,never 类型可以赋值给 数字类型 ;( never ) 是num的子类
    8. y = (()=>{ throw new Error('exception')})();
    9. // 返回值为 never 的函数可以是抛出异常的情况
    10. function error(message: string): never {
    11. throw new Error(message);
    12. }
    13. // 返回值为 never 的函数可以是无法被执行到的终止点的情况
    14. function loop(): never {
    15. while (true) {}
    16. }

    7.声明为 : {} → 限制变量值是对象

    1. let b:{name:string, age?:number}; // ? 代表可选属性,有无均可
    2. b = {name:'杨杨',age:18};
    3. b = {name:'杨杨'};

    上述声明不严谨,如下情况报错

    1. let b:{name:string}; // 只限制了name属性
    2. b = {name:'杨杨'}; // 不报错
    3. b = {name:'杨杨',age:18,c:5,d:5}; //报错 因为新增了其他属性

    解决方法:[xxx:string]:any   (string是因为js里面的属性名其实就是字符串)

        翻译为:[任意字符串的属性名xxx]:任意类型的变量

    1. let b:{name:string,[qita:string]:any}; // 只限制了name属性 (any 对 name的也有限制)
    2. b = {name:'杨杨'}; // 不报错
    3. b = {name:'杨杨',age:18,c:5,d:5}; //不报错
    4. b = {myName:'杨杨',age:18,c:5,d:5}; //报错, 此时要求变量中必须包含name
    5. b = {myName:'杨杨',name:'嘿嘿',age:18,c:5,d:5}; //不报错, 此时要求变量中必须包含name

    8.函数的类型声明:

    d是一个函数,a和b是变量(限制类型是number),返回值类型也要求是number

    9.数组的类型声明

    ①类型[]   ②Array<类型>

    10.  tuple元组:固定长度的数组

     固定长度为2

    11.  enum 枚举

     六:TS文件的编译选项

    1.监视TS文件变化并且自动编译 tsc name.ts -w

     关掉用 ctrl+c

    同时编译文件夹下所有ts文件:先在同级目录下创建tsconfig.json 然后在命令行输入 tsc 此时同时监视并编译

    2.tsconfig.json 里面的编译项 include 和 exclude

    3.tsconfig.json 里面的编译项compilerOptions 及其子项

     

     

  • 相关阅读:
    k8s - Flannel
    python多进程之间共享内存
    Shell运维开发基础(一)
    [JavaScript 刷题] 树 - 删除二叉搜索树中的节点, leetcode 450
    自己动手从零写桌面操作系统GrapeOS系列教程——22.文件系统与FAT16
    prometheus starting - 相识
    Fiddler的安装及配置2-2
    Spring Security使用总结四,此篇没有任何营养,就是将注册服务补全
    synchronized 关键字和 volatile 关键字有什么区别?
    Deep learning of free boundary and Stefan problems论文阅读复现
  • 原文地址:https://blog.csdn.net/lazylYYY/article/details/125304598