秋霞步兵区国产精品,国产精品视频二区第二页,亚洲aⅴ欧美综合一区二区三区,亚洲日韩欧美一区二区不卡

      1. <small id="x8tpb"></small>
        <address id="x8tpb"></address>

        新疆信息港歡迎您!

        新疆信息港
        新疆信息港 > 大數(shù)據(jù) >Typescript tsconfig.json 詳解

        Typescript tsconfig.json 詳解

        2020-03-23 08:16:59
        來源:互聯(lián)網(wǎng)
        閱讀:-

        環(huán)境搭建安裝tsnpm i -g typescript初始化工程mkdir ts-demonpm init -y 安裝rollupnpm i -g rollupnpm i rollup -D添加rollup.config.jstouch rollup.config....

        環(huán)境搭建

        安裝ts

        npm i -g typescript

        初始化工程

        mkdir ts-demo
        npm init -y

        安裝rollup

        npm i -g rollup
        npm i rollup -D

        添加rollup.config.js

        touch rollup.config.js 
        npm i rollup-plugin-json -D
        npm i rollup-plugin-typescript typescript tslib -D

        import json from &#39;rollup-plugin-json&#39;;
        import typescript from &#39;rollup-plugin-typescript&#39;;

        export default {
        input: &#39;src/main.ts&#39;,
        output: {
        file: &#39;dist/app.js&#39;,
        format: &#39;cjs&#39;
        },
        plugins: [ typescript() ]
        };

        package.json

        {
        &#34;name&#34;: &#34;ts-demo&#34;,
        &#34;version&#34;: &#34;1.0.0&#34;,
        &#34;description&#34;: &#34;&#34;,
        &#34;main&#34;: &#34;index.js&#34;,
        &#34;scripts&#34;: {
        &#34;test&#34;: &#34;echo \&#34;Error: no test specified\&#34; &amp;&amp; exit 1&#34;,
        &#34;dev-build&#34;: &#34;rollup -c&#34;,
        &#34;dev&#34;: &#34;npm run dev-build &amp;&amp; node ./dist/app.js&#34;
        },
        &#34;keywords&#34;: [],
        &#34;author&#34;: &#34;&#34;,
        &#34;license&#34;: &#34;ISC&#34;,
        &#34;devDependencies&#34;: {
        &#34;rollup&#34;: &#34;^1.27.5&#34;,
        &#34;rollup-plugin-json&#34;: &#34;^4.0.0&#34;,
        &#34;rollup-plugin-typescript&#34;: &#34;^1.0.1&#34;,
        &#34;tslib&#34;: &#34;^1.10.0&#34;,
        &#34;typescript&#34;: &#34;^3.7.2&#34;
        }
        }

        main.ts

        // src/main.ts
        function greeter(person: string):string {
        return &#34;Hello, &#34; + person;
        }

        const user = &#34;Jane User,this is js hello from ts&#34;;

        document.body.textContent = greeter(user);

        index.html

        &lt;!DOCTYPE html&gt;
        &lt;html lang=&#34;en&#34;&gt;
        &lt;head&gt;
        &lt;meta charset=&#34;UTF-8&#34;&gt;
        &lt;meta name=&#34;viewport&#34; content=&#34;width=device-width, initial-scale=1.0&#34;&gt;
        &lt;meta http-equiv=&#34;X-UA-Compatible&#34; content=&#34;ie=edge&#34;&gt;
        &lt;title&gt;Document&lt;/title&gt;

        &lt;/head&gt;
        &lt;body&gt;

        &lt;script src=&#34;./app.js&#34;&gt;&lt;/script&gt;

        &lt;/body&gt;
        &lt;/html&gt;
        • 打開index.html, 界面出現(xiàn)Hello, Jane User,this is js hello from ts ,恭喜你,你已經(jīng)typescript入門了?。?!

        typescript配置文件

        typescript支持兩種配置文件:

        • tsconfig.json
        • xxx.json,其中包含其需要的配置項(xiàng)
          下方將側(cè)重介紹tsconfig.json

        http://json.schemastore.org/tsconfig

        {
        &#34;files&#34;: [ # 指定需要編譯文件,相對配置文件所在
        &#34;core.ts&#34;,
        &#34;sys.ts&#34;,
        &#34;types.ts&#34;,
        &#34;scanner.ts&#34;,
        &#34;parser.ts&#34;,
        &#34;utilities.ts&#34;,
        &#34;binder.ts&#34;,
        &#34;checker.ts&#34;,
        &#34;emitter.ts&#34;,
        &#34;program.ts&#34;,
        &#34;commandLineParser.ts&#34;,
        &#34;tsc.ts&#34;,
        &#34;diagnosticInformationMap.generated.ts&#34;
        ],
        &#34;exclude&#34;: [ # 指定不需要編譯文件
        &#34;node_modules&#34;,
        &#34;**/*.spec.ts&#34;
        ],
        &#34;include&#34;: [ # 指定需要編譯文件; 不配置files,include,默認(rèn)除了exclude的所有.ts,.d.ts,.tsx
        &#34;src/**/*&#34;
        ],
        # 指定基礎(chǔ)配置文件路徑 大部分配置 compilerOptions, files, include, and exclude。切忌循環(huán)引用。
        &#34;extends&#34;: &#34;./configs/base&#34;,
        &#34;compilerOptions&#34;: { # 告知TypeScript 編譯器怎么編譯
        &#34;baseUrl&#34;: &#34;./&#34;,
        &#34;paths&#34;: { # 相對于baseUrl配置
        &#34;jquery&#34;: [&#34;node_modules/jquery/dist/jquery&#34;] ,
        &#34;*&#34;: [
        &#34;*&#34;,
        &#34;generated/*&#34;
        ]
        },
        &#34;rootDirs&#34;:[ # 找平路徑配置依賴
        &#34;src/views&#34;,
        &#34;generated/templates/views&#34;
        ],
        &#34;module&#34;: &#34;commonjs&#34;,
        &#34;noImplicitAny&#34;: true,
        &#34;removeComments&#34;: true, # 移除代碼注解
        &#34;preserveConstEnums&#34;: true,
        &#34;sourceMap&#34;: true
        &#34;types&#34;: [] #不會自動導(dǎo)入@types定義的包
        &#34;noResolve&#34;:true , # 不會自動導(dǎo)入import 依賴, 編譯會報(bào)錯(cuò)
        &#34;downlevelIteration&#34;:true # 進(jìn)行js 語法降級 for..of
        &#34;module&#34;: &#34;esnext&#34;,
        &#34;moduleResolution&#34;: &#34;node&#34;,
        &#34;strictNullChecks&#34;: true # 開啟null,檢測
        &#34;target&#34;:&#39;ES5&#39;
        &#34;strictBindCallApply&#34;:true
        &#34;skipLibCheck&#34;:true,
        },
        # 以上屬性,為常用配置屬性
        &#34;compileOnSave&#34;: false, # 整個(gè)工程而言,需要編譯器支持,譬如Visual Studio 2015 with TypeScript 1.8.4+
        &#34;typeAcquisition&#34;:{ # 整個(gè)工程的類型定義.d.ts
        &#34;enable&#34;:false, # 默認(rèn)值 false
        &#34;include&#34; : [&#34;jquery&#34;, &#34;lodash&#34;]
        &#34;exclue&#34;:[&#34;jquery&#34;, &#34;lodash&#34; ]
        },
        &#34;references&#34;:[{ # 引用的工程
        path: &#39;xxxx&#39;
        }]
        }

        其中,

        • 相對路徑,都是相對配置文件所在路徑
        • 優(yōu)先級:命令行配置 &gt; files &gt; exclude &gt; include 。
        • exclude默認(rèn)為:nodemodules, bowercomponents, jspm_packages and outDir配置項(xiàng)
        • A.ts 引用B.ts ; A.ts在files 或者include中,B.ts也會被默認(rèn)導(dǎo)入。
        • 一個(gè)路徑或者一個(gè)文件,在include與exclude之間是互斥的。
        • typeRoots與@types互斥,types、@types也可以互斥。

        移除代碼中注釋

        {
        &#34;files&#34;: [
        &#34;src/main.ts&#34;
        ],
        &#34;compilerOptions&#34;: {
        &#34;removeComments&#34;: true,
        }
        }
        // main.ts
        //add the person type
        interface Person{
        firstName: string;
        lastName: string;
        }
        class Student{
        firstName: string;
        lastName: string;
        constructor(firstName:string , lastName: string){
        this.firstName = firstName;
        this.lastName = lastName;
        }
        }
        // add the greeter
        function greeter(person: Person):string {
        return `Hello,${person.firstName}:${person.lastName}`
        }
        //new a student
        const user = new Student(&#39;xiaoming&#39;,&#39;hello&#39;);

        document.body.textContent = greeter(user);
        //編譯后
        &#39;use strict&#39;;

        var Student = (function () {
        function Student(firstName, lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
        }
        return Student;
        }());
        function greeter(person) {
        return &#34;Hello,&#34; + person.firstName + &#34;:&#34; + person.lastName;
        }
        var user = new Student(&#39;xiaoming&#39;, &#39;hello&#39;);
        document.body.textContent = greeter(user);

        開啟null、undefined檢測

        {
        &#34;files&#34;: [&#34;./src/main.ts&#34;],
        &#34;compilerOptions&#34;: {
        &#34;removeComments&#34;: true,
        &#34;declaration&#34;: true,
        &#34;declarationDir&#34;: &#34;./&#34;,
        &#34;noResolve&#34;: false,
        &#34;strictNullChecks&#34;: true
        },
        }
        const user ;
        user = new Student(&#39;xiaoming&#39;,&#39;hello&#39;); # 編譯報(bào)錯(cuò)

        參考文獻(xiàn)

        • www.rollupjs.com/
        • www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html
        • github.com/rollup/rollup-plugin-typescript
        • json.schemastore.org/tsconfig

        本文作者:前端首席體驗(yàn)師(CheongHu)

        聯(lián)系郵箱:simple2012hcz@126.com

        推薦閱讀:查找我的iphone在哪里打開

        免責(zé)聲明:本文僅代表企業(yè)觀點(diǎn),與新疆信息港無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實(shí),對本文以及其中全部或者部分內(nèi)容、文字的真實(shí)性、完整性、及時(shí)性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實(shí)相關(guān)內(nèi)容。
        熱門圖片
        熱門搜索