• Typescript基本语法介绍


    目录

    一、Typescript总体介绍

    二、 Typescript安装

    三、Typescript文件编译运行

    四、Typescript基础类型

    1、基本数据类型

    2、引用数据类型

    3、元组

    4、枚举

    5、any

    6、void

    7、函数的可选参数

    8、字面量类型

    五、面向对象

    1、接口

    1.1、类接口

    1.2、对象接口


    一、Typescript总体介绍

    Typescript是Javascript超集,是JavaScript+强类型。javascript 是弱类型语言,无法进行类型校验;而Typescript解决了这个问题,它可以对类型进行校验。

    跨平台:TypeScript 编译器可以安装在任何操作系统上,包括 Windows、macOS 和 Linux。

    ES6 特性:TypeScript 包含 ECMAScript 2015 (ES6) 的大部分特性,例如箭头函数。

    面向对象的语言:TypeScript 提供所有标准的 OOP 功能,如类、接口和模块。

    静态类型检查:TypeScript 使用静态类型并帮助在编译时进行类型检查。因此,你可以在编写代码时发现编译时错误,而无需运行脚本。

    可选的静态类型:如果你习惯了 JavaScript 的动态类型,TypeScript 还允许可选的静态类型。

    二、 Typescript安装

    通过cnpm全局安装:

    cnpm install -g typescript

    安装完后,我们可以查看版本,检查是否安装成功:(tsc是Typescript编译器)

    tsc --version

    三、Typescript文件编译运行

    我们需要将Typescript文件(以.ts结尾)通过Typescript编译器tsc编译成.js文件才能在node环境下运行。

    tsc xxx.ts        ---将ts文件编译为js文件
    node xxx.js     ---运行js文件

    四、Typescript基础类型

    TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型。

    1、基本数据类型

    1. //数字
    2. let a: number = 1 //限定了a是number类型的变量,不能给a赋除number类型的其他值,否则会报错
    3. //字符串
    4. let b: string = 'hello'
    5. //布尔
    6. let c: boolean = true
    7. //null
    8. let d: null = null
    9. //undefined
    10. let e: undefined = undefined
    11. console.log(a, b, c, d, e);//1 hello true null undefined

    2、引用数据类型

    1. // 1.对象
    2. // 给Object类型的变量赋值数字、字符串、布尔类型的值不会报错,因为它们会进行自动装箱
    3. let obj: Object = 1
    4. let obj1: Object = '1'
    5. let obj2: Object = true
    6. let obj3: Object
    7. obj3 = { name: 'zahngsan', age: 14 }
    8. console.log(obj, obj1, obj2, obj3); //1 1 true { name: 'zahngsan', age: 14 }
    9. // 2.数组
    10. //数组元素只能是数字类型
    11. let arr: number[] = [1, 2, 3, 4]
    12. //数组元素可以是字符串、数字、对象、函数
    13. let arr1: (string | number | Object | Function)[] = ['1', 2, 3, {}, function () { }]
    14. // 泛型
    15. let arr2: Array<number> = [4, 5, 6]
    16. console.log(arr, arr1, arr2);//[ 1, 2, 3, 4 ] [ '1', 2, 3, {}, [Function (anonymous)] ] [ 4, 5, 6 ]
    17. //3.函数
    18. let foo: Function = () => {
    19. console.log('我是函数');
    20. }
    21. foo()//我是函数

    3、元组

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

    1. let arr3: [number, string, boolean] = [1, 'hello', true]
    2. console.log(arr3);//[ 1, 'hello', true ]

    4、枚举

    enum类型是对JavaScript标准数据类型的一个补充。

    1. // 枚举类型
    2. // 1.默认枚举
    3. enum Season {
    4. spring,
    5. summer,
    6. autumn,
    7. winter
    8. }
    9. console.log(Season);
    10. //输出结果:
    11. // {
    12. // '0': 'spring',
    13. // '1': 'summer',
    14. // '2': 'autumn',
    15. // '3': 'winter',
    16. // spring: 0,
    17. // summer: 1,
    18. // autumn: 2,
    19. // winter: 3
    20. // }
    21. // 2.字符串枚举
    22. enum Gender {
    23. male = '男',
    24. female = '女'
    25. }
    26. console.log(Gender);//{ male: '男', female: '女' }

    5、any

    有时候我们会想要为那些在编程阶段还不清楚类型的变量指定一个类型。 这些值可能来自于动态的内容,比如来自用户输入或第三方代码库。 这种情况下,我们不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。那么我们可以使用any类型来标记这些变量:

    1. let a:any = 3;
    2. a = true;
    3. console.log(a); //true

    6、void

    某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。 当一个函数没有返回值时,你通常会见到其返回值类型是void

    1. // 当函数不需要返回值,可以给函数设置void
    2. function sum():void{
    3. console.log('我被调用了');
    4. }
    5. sum()//我被调用了

    7、函数的可选参数

    可选参数:在可选参数名的后面添加 ?(问号)

    1. // 设置函数参数可选 ? 表示可有可无
    2. function sum(b: string, a?: number) {
    3. console.log('我被调用了');
    4. }
    5. sum('1')

    8、字面量类型

    我们给str1赋值为字符串类型,之后更改str1变量的值时,更改的值也必须是字符串类型,而不能是其他类型:

    1. let str1 = 'Hello';
    2. str1 = 'world' //可以
    3. str1 = 1 //不行

    五、面向对象

    1、接口

    接口可以理解为是抽象到极致的抽象类,接口中只能存在抽象方法和属性。接口通过interface关键字来声明。

    接口也可以理解成一种标准,是特殊的类,特殊的对象。我们使用类去实现接口,接口就是标准,类按照标准去实现,使用类去实现接口,接口的属性和方法,类都必须具备。

    1.1、类接口

    接口可以理解成特殊的类

    1. // 声明一个接口
    2. interface StudentInterFace {
    3. name;
    4. say(msg: string): void; //未实现的方法,(抽象方法,没有方法体的方法)
    5. }
    6. // 使用类来实现上述接口
    7. class Student implements StudentInterFace {
    8. // 使用类去实现接口,类需要具备接口的全部属性和方法
    9. name;
    10. say(msg: string): void {
    11. console.log(this.name + '说' + msg);
    12. };
    13. // 类还可以有自己的方法
    14. constructor(name) {
    15. this.name = name
    16. }
    17. foo() {
    18. }
    19. };
    20. let student: StudentInterFace = new Student('zhangsan');
    21. student.say('hello'); //zhangsan说hello

    1.2、对象接口

    接口还可以理解成一种特殊的类

    1. enum Gender {
    2. male = '男',
    3. female = '女'
    4. }
    5. class Student {
    6. name: string;
    7. age: number;
    8. // gender设置成可枚举类型,限定性别只能是男或者女
    9. gender: Gender
    10. }
    11. //声明一个接口
    12. interface PropInterFace {
    13. // data是一个数组,数组元素必须是Student类
    14. data: Array<Student>,
    15. //visible是布尔类型
    16. visible: boolean
    17. };
    18. //使用对象来实现上述接口
    19. let prop: PropInterFace = {
    20. data: [
    21. { name: 'zhangsan', age: 12, gender: Gender.female },
    22. { name: 'lisi', age: 16, gender: Gender.male }
    23. ],
    24. visible: false
    25. }
    26. console.log(prop);

  • 相关阅读:
    如何快速掌握JVM调优的基本方法和工具,如JConsole和VisualVM
    部署zookeeper集群
    Leetcode.2591 将钱分给最多的儿童
    本机Consul注册为服务并开机自启动
    怎么把音频转换成mp3,一键批量转换法
    win11家庭版docker和milvus
    【ROS】机械人开发四--ROS常用概念与Launch文件
    浅析kubernetes中client-go Informer
    ardupilot开发 --- Jetson Orin Nano 篇
    RV-GAN:使用新的多尺度生成对抗网络分割眼底照片中的视网膜血管结构
  • 原文地址:https://blog.csdn.net/lq313131/article/details/126959313