最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

TypeScript配置文件tsconfig.json詳解

 更新時(shí)間:2025年05月06日 14:16:28   作者:聒噪,  
這篇文章主要介紹了TypeScript配置文件tsconfig.json的使用,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

生成tsconfig.json

這個(gè)文件是通過(guò)tsc --init命令生成的,在桌面上新建一個(gè)文件夾TsDemo,然后打開(kāi)VSCode,把文件托到編輯器中,然后打開(kāi)終端Terminal,輸入tsc --init。

輸入完成后,就會(huì)出現(xiàn)tsconfig.json文件,你可以打開(kāi)簡(jiǎn)單的看一下,不過(guò)此時(shí)你可能看不懂。

其實(shí)它就是用來(lái)配置如何對(duì)ts文件進(jìn)行編譯的,我們都叫它 typescript 的編譯配置文件。

如果此時(shí)你的tsc執(zhí)行不了,很有可能是你沒(méi)有全局安裝 TypeScript,可以全局安裝一下。

讓tsconfig.json 文件生效

你現(xiàn)在可以在文件夾跟目錄建立一個(gè)demo.ts文件,然后編寫一些最簡(jiǎn)單的代碼,代碼如下:

const person:string = 'Riven';

這時(shí)候我們不在使用ts-node直接執(zhí)行了,需要用tsc demo.ts進(jìn)行編譯,編譯后會(huì)得到demo.js文件。

生成的代碼如下:

var person = 'Riven';

這時(shí)候好像一切都是正常的,但是我要告訴你的真相是tsconfig.json這個(gè)編譯配置文件并沒(méi)有生效。

此時(shí)我們打開(kāi)tsconfig.json文件,找到complilerOptions屬性下的removeComments:true選項(xiàng),把注釋去掉。

這個(gè)配置項(xiàng)的意思是,編譯時(shí)不顯示注釋,也就是編譯出來(lái)的js文件不顯示注釋內(nèi)容。

現(xiàn)在你在文件中加入一些注釋,比如:

// I love Riven
const person:string = 'Riven';

這時(shí)候再運(yùn)行編譯代碼tsc demo.ts,編譯后打開(kāi)demo.js文件,你會(huì)發(fā)現(xiàn)注釋依然存在,說(shuō)明tsconfig.json文件沒(méi)有起作用。

如果要想編譯配置文件起作用,我們可以直接運(yùn)行tsc命令,這時(shí)候tsconfig.json才起作用,可以看到生成的js文件已經(jīng)不帶注釋了。

include,exclude,和files

那現(xiàn)在又出現(xiàn)問(wèn)題了,如果我們的跟目錄下有多個(gè)ts文件,我們卻只想編譯其中的一個(gè)文件時(shí),如何作?

我們?cè)陧?xiàng)目根目錄,新建一個(gè)文件demo2.ts文件,然后也寫一段最簡(jiǎn)單的 ts 代碼。

const person2:string = '翠花';

如果這時(shí)候我們?cè)诮K端里運(yùn)行tsc,雖然tsconfig.json生效了,但是兩個(gè)文件都被我們編譯了。

這不是你想要的結(jié)果,我們可以用三種辦法解決這個(gè)問(wèn)題。

第一種:使用 include 配置

include屬性是用來(lái)指定要編譯的文件的,比如現(xiàn)在我們只編譯demo.ts文件,而不編譯demo2.ts文件,就可以這樣寫。

寫配置文件時(shí)有個(gè)坑需要注意,就是配置文件不支持單引號(hào),所以里邊都要使用雙引號(hào)。

{
  "include":["demo.ts"],
  "compilerOptions": {
      //any something
      //........
  }
}

這時(shí)候再編譯,就只編譯demo.ts文件了。

第二種:使用 exclude 配置

include是包含的意思,exclude是不包含,除什么文件之外,意思是寫再這個(gè)屬性之外的而文件才進(jìn)行編譯。

比如你還是要編譯demo.ts文件,這時(shí)候的寫法就應(yīng)該是這樣了。

{
   "exclude":["demo2.ts"],
  "compilerOptions": {
      //any something
      //........
  }
}

這樣寫依然只有demo.ts被編譯成了js文件。

第三種:使用 files 配置

files的配置效果和include幾乎一樣,我是沒(méi)找出有什么不同,只要配置到里邊的文件都可以編譯。

{
  "files":["demo.ts"],
  "compilerOptions": {
      //any something
      //........
  }
}

結(jié)果是依然只有demo.ts文件被編譯。

下來(lái)我們學(xué)習(xí)下compilerOptions配置項(xiàng),它是告訴TypeScript具體如何編譯成js文件的,里邊的配置項(xiàng)非常多,這節(jié)我們先來(lái)講幾個(gè)簡(jiǎn)單的配置項(xiàng),目的是讓你熟悉compilerOptions的使用方法。

removeComments 屬性

removeComments是complerOptions里的一個(gè)子屬性,它的用處是告訴TypeScript對(duì)編譯出來(lái)的js文件是否顯示注釋(注解)。比如我們現(xiàn)在把removeComments的值設(shè)置為true,就是在js中不顯示注釋。這個(gè)上面我們有用過(guò)!

strict 屬性

strict屬性如果設(shè)置為true,就代表我們的編譯和書(shū)寫規(guī)范,要按照TypeScript最嚴(yán)格的規(guī)范來(lái)寫,如果我們把這個(gè)設(shè)置為false或者注釋掉,意思是我們可以對(duì)設(shè)置一些不嚴(yán)格的寫法。

noImplicitAny屬性

noImplicitAny屬性的作用是,允許你的注解類型 any 不用特意表明,只聽(tīng)概念很難理解。如果你只看官方 API,你可能要迷糊一陣啥叫允許你的注解類型any不用特意表明,這就是每個(gè)漢字我都認(rèn)識(shí),連在一期就不知道啥意思的最好詮釋。

為了更好的說(shuō)明,我們舉個(gè)例子,在demo.ts里,刪除剛才的代碼,然后寫一個(gè)方法,方法的參數(shù)我們?cè)O(shè)置成任意類型(any)。

function riven(name) {
    return name;
  }

這時(shí)候我們的TypeScript是進(jìn)行報(bào)錯(cuò)的,我們用tsc編譯也是報(bào)錯(cuò)的。這就是因?yàn)槲覀冮_(kāi)啟了strict:true,我們先注釋掉,然后把noImplicitAny的值設(shè)置為false,就不再報(bào)錯(cuò)了。

如果設(shè)置為noImplicitAny:true,意思就是值就算是 any(任意值),你也要進(jìn)行類型注釋。

function riven(name:any) {
    return name;
  }

你可以簡(jiǎn)單的理解為,設(shè)置為 true,就是必須明確置頂 any 類型的值。

strictNullChecks屬性

我們先把strictNullChecks設(shè)置為false,它的意思就是,不強(qiáng)制檢查 NULL 類型。

我們舉個(gè)例子,讓你能一下子就明白,還是刪除demo.ts里的代碼,然后編寫代碼.

const riven: string = null;

代碼寫完后,你會(huì)發(fā)現(xiàn)這段代碼是不報(bào)錯(cuò)的,如果是以前,一定是報(bào)錯(cuò)的,這就是我們配置了“不強(qiáng)制檢驗(yàn) null 類型”。

如果你設(shè)成strictNullChecks:true,這時(shí)候就報(bào)錯(cuò)了。

ts-node遵循tsconfig.js

有的小伙伴問(wèn)我了,tsc fileName 是沒(méi)辦法遵循tsconfig.js文件的,那ts-node是否遵循?

這里直接告訴你答案,ts-node是遵循的,感興趣的可以自行試一下。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • TS中Array.reduce提示沒(méi)有與此調(diào)用匹配的重載解析

    TS中Array.reduce提示沒(méi)有與此調(diào)用匹配的重載解析

    這篇文章主要為大家介紹了TS中Array.reduce提示沒(méi)有與此調(diào)用匹配的重載解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 移動(dòng)設(shè)備web開(kāi)發(fā)首選框架:zeptojs介紹

    移動(dòng)設(shè)備web開(kāi)發(fā)首選框架:zeptojs介紹

    這篇文章主要介紹了移動(dòng)設(shè)備web開(kāi)發(fā)首選框架:zeptojs介紹,他兼容jquery的API,所以學(xué)起來(lái)或用起來(lái)并不吃力,需要的朋友可以參考下
    2015-01-01
  • require.js使用方法的簡(jiǎn)單代碼講解筆記

    require.js使用方法的簡(jiǎn)單代碼講解筆記

    頁(yè)面需要加載多個(gè)js文件時(shí),加載時(shí)瀏覽器會(huì)停止網(wǎng)頁(yè)渲染,加載文件越多,網(wǎng)頁(yè)失去響應(yīng)的時(shí)間就會(huì)越長(zhǎng);由于js文件之間存在依賴關(guān)系,必須嚴(yán)格保證加載順序,當(dāng)依賴關(guān)系很復(fù)雜的時(shí)候,代碼的編寫和維護(hù)都會(huì)變得困難。這種情況下require.js插件應(yīng)運(yùn)而生。
    2022-12-12
  • TypeScript類型實(shí)現(xiàn)加減乘除詳解

    TypeScript類型實(shí)現(xiàn)加減乘除詳解

    這篇文章主要為大家介紹了TypeScript類型實(shí)現(xiàn)加減乘除示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 前端構(gòu)建 Less入門(CSS預(yù)處理器)

    前端構(gòu)建 Less入門(CSS預(yù)處理器)

    眾多CSS預(yù)處理器中Less的語(yǔ)法最接近原生CSS,因此相對(duì)來(lái)說(shuō)更容易上手,假如有JS、C#等編程經(jīng)驗(yàn)的話,其實(shí)上述的幾種預(yù)處理器的學(xué)習(xí)成本也不會(huì)特別高。下面是我們這陣子的學(xué)習(xí)筆記,以便日后查閱
    2017-03-03
  • requireJS使用指南

    requireJS使用指南

    如今最常用的JavaScript庫(kù)之一是RequireJS。最近我參與的每個(gè)項(xiàng)目,都用到了RequireJS,或者是我向它們推薦了增加RequireJS。在這篇文章中,我將描述RequireJS是什么,以及它的一些基礎(chǔ)場(chǎng)景。 
    2016-04-04
  • TypeScript學(xué)習(xí)輕松玩轉(zhuǎn)類型操作

    TypeScript學(xué)習(xí)輕松玩轉(zhuǎn)類型操作

    這篇文章主要為大家介紹了TypeScript學(xué)習(xí)輕松玩轉(zhuǎn)類型操作,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • layui中的layer彈出層自定義樣式更改背景

    layui中的layer彈出層自定義樣式更改背景

    layui中的layer彈出層有很多提示框,但是我們使用最多的應(yīng)該就幾種,layer.msg、layer.alert、layer.open、layer.load等。layer?有內(nèi)置的skin:layui-layer-lan,layui-layer-molv,可以直接使用。skin不僅允許你傳入layer內(nèi)置的樣式class名,可以自定義class名。
    2023-06-06
  • TypeScript前端上傳文件到MinIO示例詳解

    TypeScript前端上傳文件到MinIO示例詳解

    這篇文章主要為大家介紹了TypeScript前端上傳文件到MinIO示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 如何解決tsconfig.json配置不生效的問(wèn)題

    如何解決tsconfig.json配置不生效的問(wèn)題

    這篇文章主要介紹了如何解決tsconfig.json配置不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05

最新評(píng)論

鸡西市| 灌阳县| 库车县| 岳池县| 高平市| 东至县| 囊谦县| 邳州市| 金门县| 太谷县| 盐城市| 桂东县| 雷州市| 江城| 抚远县| 平原县| 珠海市| 盐边县| 武宁县| 福安市| 饶河县| 阜宁县| 台江县| 博白县| 灵川县| 中西区| 湘乡市| 高安市| 湟中县| 资中县| 扎赉特旗| 巴彦淖尔市| 鹤壁市| 长岭县| 河津市| 南召县| 道孚县| 河西区| 赤水市| 竹溪县| 苗栗市|