• typescript基础语法--变量/函数/指令/类


    博客地址 :https://www.cnblogs.com/sandraryan/

    要把ts文件引入到html中,首先要转码为js文件。

    步骤:

    终端运行: npm i -g typescript

    tsc --init

    然后再vscode中ctrl shift b, 点击watch

    以后保存ts文件,js文件自动刷新

    如果你觉得这个方法太简单 你可以选择写一行代码在终端重新编译一次,指令是: tsc ts文件名,进行编译

    然后看看基本语法叭

    声明变量:

    先搞一个html文件吧转码后的js文件引进去,然后我们操作ts文件(你懂我意思吧)

    这个是ts文件命名为ts1.ts

    声明变量很简单,都写在注释里了~~~~

    总之就是:

    ts变量的声明  

    1.ts在声明变量时,要规定变量的类型, 

    2.如没有规定,会在第一次为变量赋值时确定它的类型 

    3.一旦一个变量的类型被确定,那么之后使用这个变量时,不能改变变量类型(会报错)

    let a = 100;
    console.log(1);
    /**
     * ts变量的声明
     * 1.ts在声明变量时,要规定变量的类型,
     * 2.如没有规定,会在第一次为变量赋值时确定它的类型
     * 3.一旦一个变量的类型被确定,那么之后使用这个变量时,只能依托这个类型
    */
    // a = 'ji';
    // 声明变量时约束类型
    let bol:boolean = true;
    // bol = 2333;
    // 声明数组list,数组中所有类型都是字符串
    let list:string[] = ['hi','guys','how','do','you','do'];
    console.log(list);
    // 声明数组另一种方法
    let arr:Array<string> = ['hi','guys','how','do','you','do'];
    console.log(arr);
    // 元组: 声明时规定每个元素类型,规定元素个数,即一个固定长度的类型不同的数组
    let t:[boolean,string,number] = [false,'hi',233];
    // 不能push 不能修改
    // 声明枚举类型
    //将所有的可能性一一列举在某个数据中,需要取值时可以用index,获取index可以用数据获取
    //下标从0开始 也可手动设置下标设置好后,下标从该设置往后延续10 11 ...
    enum Color {
        //要枚举出来的数据本身
        yellow,red,green,blue
    }
    console.log(Color);
    console.log(Color['yellow']);
    console.log(Color[1]);
    // 声明一个any的数据类型
    let an:any = 90;
    an = 'hello';
    an = [2,3,4];
    console.log(an);
    
    // void类型的数据只能复制为null或者undefined
    let v:void;
    console.log(v);

    这个是转码后的js文件

    "use strict";
    var a = 100;
    console.log(1);
    /**
     * ts变量的声明
     * 1.ts在声明变量时,要规定变量的类型,
     * 2.如没有规定,会在第一次为变量赋值时确定它的类型
     * 3.一旦一个变量的类型被确定,那么之后使用这个变量时,只能依托这个类型
    */
    // a = 'ji';
    // 声明变量时约束类型
    var bol = true;
    // bol = 2333;
    // 声明数组list,数组中所有类型都是字符串
    var list = ['hi', 'guys', 'how', 'do', 'you', 'do'];
    console.log(list);
    // 声明数组另一种方法
    var arr = ['hi', 'guys', 'how', 'do', 'you', 'do'];
    console.log(arr);
    // 元组: 声明时规定每个元素类型,规定元素个数,即一个固定长度的类型不同的数组
    var t = [false, 'hi', 233];
    // 不能push 不能修改
    // 声明枚举类型
    //将所有的可能性一一列举在某个数据中,需要取值时可以用index,获取index可以用数据获取
    //下标从0开始 也可手动设置下标设置好后,下标从该设置往后延续10 11 ...
    var Color;
    (function (Color) {
        //要枚举出来的数据本身
        Color[Color["yellow"] = 0] = "yellow";
        Color[Color["red"] = 1] = "red";
        Color[Color["green"] = 2] = "green";
        Color[Color["blue"] = 3] = "blue";
    })(Color || (Color = {}));
    console.log(Color);
    console.log(Color['yellow']);
    console.log(Color[1]);
    // 声明一个any的数据类型
    var an = 90;
    an = 'hello';
    an = [2, 3, 4];
    console.log(an);
    // void类型的数据只能复制为null或者undefined
    var v;
    console.log(v);

    引入html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>Document</title>
    </head>
    <body>
        <script src="ts1.js"></script>
    </body>
    </html>

    函数

    ts中函数也很简单~ 举个例子

    ts函数可以指定参数和返回值的类型,也可以添加默认值(在声明函数添加形参的时候)

    // 函数
    function fn(x:number,y:number):number{
        return x+y;
    }
    let r:number = fn(3,4);
    console.log(r); //7
    // 声明函数时规定函数参数类型和返回值的类型,函数调用时必须严格遵循这个规定,否则编码报错
    // 为参数设置默认值,拥有默认值的参数应该声明在参数列表最后面
    function fn2(x:number=10,y:number=20):number{
        return x+y;
    }
    let r2 = fn2();
    console.log(r2);
    // 函数的剩余参数
    // an是除了num之外的所有参数列表,成为剩余参数,类型规定为string,是个数组
    function fn3(num:number,...an:string[]){
        console.log(num);
        console.log(an);
    }
    fn3(45,'a','b','c');
    // 剩余参数也可以是个元组,规定类型
    function fn4(num:number,...an:[string,boolean]){
        console.log(num);
        console.log(an);
    }
    fn4(45,'r',true);

    转码后的js文件

    "use strict";
    // 函数
    function fn(x, y) {
        return x + y;
    }
    var r = fn(3, 4);
    console.log(r); //7
    // 声明函数时规定函数参数类型和返回值的类型,函数调用时必须严格遵循这个规定,否则编码报错
    // 为参数设置默认值,拥有默认值的参数应该声明在参数列表最后面
    function fn2(x, y) {
        if (x === void 0) { x = 10; }
        if (y === void 0) { y = 20; }
        return x + y;
    }
    var r2 = fn2();
    console.log(r2);
    // 函数的剩余参数
    // an是除了num之外的所有参数列表,成为剩余参数,类型规定为string,是个数组/
    function fn3(num) {
        var an = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            an[_i - 1] = arguments[_i];
        }
        console.log(num);
        console.log(an);
    }
    fn3(45, 'a', 'b', 'c');
    // 剩余参数也可以是个元组,规定类型
    function fn4(num) {
        var an = [];
        for (var _i = 1; _i < arguments.length; _i++) {
            an[_i - 1] = arguments[_i];
        }
        console.log(num);
        console.log(an);
    }
    fn4(45, 'r', true);

    类的声明

    ts文件:

    
    
    // 类的声明
    // 类的属性需要先声明在使用
    class Point{
        // 在x=90这个表达式里x被隐式的规定为number类型
        // 如果没有一开始就规定类型,会将第一次赋值的类型作为这个属性的类型
        x = 90;
        y:number;
        // readonly 只读属性,不可以操作
        readonly age:number = 100;
        constructor(y){
            this.y = y;
        }
        getAge():number{
            return this.age;
        }
    }
    let p = new Point(70);
    // console.log(p);
    // Point {x: 90, y: 70}
    let age = p.getAge();
    console.log(p);
    // Point {x: 90, age: 100, y: 70}

    js文件:

    
    
    var Point = /** @class */ (function () {
        function Point(y) {
            // 在x=90这个表达式里x被隐式的规定为number类型
            // 如果没有一开始就规定类型,会将第一次赋值的类型作为这个属性的类型
            this.x = 90;
            this.y = y;
        }
        return Point;
    }());
    var p = new Point(70);
    console.log(p);
    // Point {x: 90, y: 70}

     抽象类

    ts:

    // 抽象类
    abstract class People{
        // 声明属性
        readonly eyes:number = 2;
        // 声明类的一个普通方法
        public eat(){
            console.log('i can eat');
        }
        //声明类的抽象方法,抽象方法不能有方法体,只能约束参数和返回值的类型
        abstract run();
        abstract sum(x:number,y:number):number;
        
    }
    // 抽象类里不能实例化对象,因为抽象类中包含了抽象方法,抽象方法没有方法体,如果允许从抽象类中实例化对象,后面的逻辑都不成立
    //let p = new People(); //报错:无法创建抽象类的实例。

    js

    "use strict";
    // 抽象类
    var People = /** @class */ (function () {
        function People() {
            // 声明属性
            this.eyes = 2;
        }
        // 声明类的一个普通方法
        People.prototype.eat = function () {
            console.log('i can eat');
        };
        return People;
    }());
  • 相关阅读:
    Android SDK、NDK、JNI的简单介绍
    深入理解计算机系统—异常
    Jmeter3.1 使用及新增报告功能
    jmeter3.1连接数据库报错,ORA00923: 未找到要求的 FROM 关键字
    Jenkins插件、war下载地址
    jenkins自动打tag
    jenkins参数化构建过程
    Jmeter接口测试自动化(jmeter+ant+jenkins持续集成)
    既然选择开始就不会停下
    知识提升整体
  • 原文地址:https://www.cnblogs.com/sandraryan/p/11969707.html
Copyright © 2020-2023  润新知