美文网首页
TypeScript基本介绍

TypeScript基本介绍

作者: duans_ | 来源:发表于2019-06-24 11:46 被阅读0次

    TypeScript

    TypeScript介绍

    背景介绍

    • TypeScript简称ts
    • TypeScript是ES6的实现,ts语言是按照ES6的标准设计的
    • TypeScript是微软公司联合谷歌公司推出的一门基于javascript的一门新语言,目前主要应用于Angular2以上版本的的开发中

    什么是TypeScript?

    • TypeScript是JavaScript的一个超集,对JavaScript中的变量加入的类型的支持和限制
    • TypeScript可以编译出纯净,简洁的Javascript代码,并且可以运行在任何浏览器上、Node.js环境中和任何支持ECMAScript 3(或更高版本)的JavaScript引擎中
    • TypeScript本身并不能直接运行在浏览器上,需要编译成JavaScript进行运行(可以认为TypeScritp只存在于开发阶段,生产阶段依然使用的是我们熟悉的JavaScript,使用TypeScript中的好处可以提高开发效率,解决javascript弱类型带来的一些问题)
    • TypeScript的文件后缀名为.ts

    运行环境

    TypeScript编译器介绍

    • TypeScript编译器基于nodejs环境,所以必须先安装nodejs环境

    TypeScript编译器安装

    1. 安装:npm install typescript -g

    因为TypeScript编译器为一个工具包,所以采用全局安装

    1. 编译:tsc hello.ts
      • 指定编译文件名: tsc hello.ts --outFile bundle.js

    hello.ts为文件名,因为TypeSscript本身不能直接运行,所以必须编译成js代码,才能进行运

    TypeScript中数据类型介绍

    • 定义布尔类型
      //ts声明布尔类型的变量
      let flag:boolean=true;

    • ts中定义数值类型
      let count:number=100

    • ts中定义字符类型
      let str:string='hello world'

    • ts中定义undefined类型
      let a:undefined=undefined

    • ts中定义null
      let b:null=null

    • ts中定义any(任意类型:变量值可以为任意类型)
      let anyData:any=''

    • ts定义void类型:一般用预定义函数返回值类型

    function print:void(params){
        console.log(params);
    }
    //声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null:
    let unusable: void = undefined;
    
    • 定义数组

      • 第一种:元素类型后面加一个[]
      // 定义一个组成元素为数字的数组
      let arr1:number[]=[1,2,3,4]
      //定义一个字符数组
      let arr2:string[]=['jack','robin','pony']
      // 定义一个对象数组
      let arr3:object[]=[
          {name:'jack',age:1967},
          {name:'robin',age:1968},
          {name:'pony',birthday:1974}
      ]
      
      • 第二种:使用数组泛型,Array<元素类型>
      //定义一个组成元素为字符的数组
      let arr1:Array<string>=['jack','robin','pony']
      //定一个数字数组
      let arr2:Array<number>=[1,2,3,4]
      //定义一个对象数组
      let arr3:Array<object>=[
         {name:'jack',age:1967},
         {name:'robin',age:1968},
         {name:'pony',birthday:1974}
      ]
      
    • 对象的定义

      • 方案1:
      // 在对象名后面使用一个{}来进行对象属性值类型的约束
      let obj:{name:string,age:number,isMarry:boolean}={
          name:'zs',
          age:30,
          isMarry:false
      }
      
      • 方案2:
      // 使用接口定义属性值的类型
      interface Person={
          name:string;
          age:number;
          isMarry:boolean;
      }
      // 创建对象的时候引用该接口, 进行属性值类型的约束
      let p1:Person={
          name:'zs',
          age:30,
          isMarry:false
      }
      

    函数

    函数的定义

    • 加入了类型的约束,只要体现在参数和返回值上面
    function sum(a:number,b:number):string{
        return '求和结果为:'+(a+b);
    }
    

    类(class)

    类(class)的介绍

    // 类(class)相当于ES5中的构造函数
    
    class Person{
        // 声明静态属性
        static version:string='V1.0.0';
        //声明成员属性; 并进行数据类型的约束
        name:string;
        age:number;
        sex:string;
        //构造函数,做一些初始化的事,比如给成员属性赋值
        constructor(props){
            //成员属性赋值
            this.name=props.name;
            this.age=props.age;
            this.sex=props.sex;
        }
        //声明成员方法1
        sayName(){
            console.log('My name is '+this.name);
        }
        //声明成员方法2
        dance(){
            console.log('我会跳新疆舞');
        }
        // 静态成员方法
        static sayHi():string{
            console.log('hello world!!!');
            return 'hello world!!';
        }
    }
    //创建实例:和js中一样
    let p1=new Person({name:'zs',age:10,sex:'男'})
    
    

    类的继承(extends)

    
    //通过extends语法结构继承Person类的属性和方法
    class Student extends Person{
        //声明自己独有的成员属性; 并进行数据类型的约束
        addr:string;
        constructor(props){
            //必须在此处使用super()先调用父类的构造函数
            super(props);
            //属性赋值
            this.addr=props.addr
        }
        //添加自己独有的成员方法
        hobby(){
            console.log('爱生活,爱代码');
        }
        
    }
    //创建实例对象
    let s1=new Student({name:'ls',age:10,sex:'女',addr:'中国西安'});
    
    

    构建工具集成

    webpack

    • 参考文档

    • 安装ts-loader:npm install ts-loader --save-dev

    • 配置webpack

      • webpack.config.js基本配置
      module.exports = {
          entry: "./src/index.tsx",
          output: {
              filename: "bundle.js"
          },
          resolve: {
              // Add '.ts' and '.tsx' as a resolvable extension.
              extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js"]
          },
          module: {
              loaders: [
                  // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader'
                  { test: /\.tsx?$/, loader: "ts-loader" }
              ]
          }
      };
      

    vscode配置ts自动转换成js

    • 准备工作

      • 全局安装typescript工具包:npm i typescript -g
    • 第一步: 运行tsc --init命令;生成tsconfig.json项目配置文件

      vscode-ts-01.png
    • 第二步: 终端=>运行任务=>tsc监视


      vscode-ts-02.png
    • 第三步:ts文件发生改变,会自动重新编译js, 并保存到tsconfig.json中指定的目录

      vscode-ts-03.png
    • tsconfig.json配置文件示例

      {
          "compilerOptions": {
              "target":"es5",       //指定最终编译的js版本
              "module": "system",   
              "noImplicitAny": true,
              "removeComments": true,
              "preserveConstEnums": true,
              "outFile": "../../built/local/tsc.js",
              "outDir": "./js",     //指定编译输出目录
              "sourceMap": true
          },
          // 用户指定需要进行编译的目录
          "include": [
              "src/**/*"
          ],
          // 用于指定排除项, 此处配置的目录文件, 将不会被编译
          "exclude": [
              "node_modules",
              "**/*.spec.ts"
          ],
          // 指定需要编译的ts文件列表
          files:[
              "a.ts",
              "b.ts"
          ]
      }
      

    参考文档

    英文官网

    ts中文网

    tsconfig.json

    在线运行ts

    相关文章

      网友评论

          本文标题:TypeScript基本介绍

          本文链接:https://www.haomeiwen.com/subject/pmunqctx.html