<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
TS 的特點:
javaScript
歸於 javaScript 。typeScript 是區分大小寫的一門語言,本篇文章主要帶你瞭解 ts 的安裝,環境設定,以及簡單的入門。
使用之前需要安裝:
npm install -g typescript
安裝完成之後,使用 tsc -v 檢查安裝之後的版本。
第一個 ts 檔案:01.ts,程式碼如下:
(()=>{ function show(msg){ return "字串:"+msg } let str = "前端" console.log(show(str)) })()
通過 script
引入 html 檔案
<script src="./01.ts"></script>
頁面正常執行,因為 ts 能夠支援 js 語法,所以檔案內直接引入使用是沒問題的,除此之外,還可以使用 node 命令執行該檔案,也是可以正常執行的。
如果此時,在 ts 檔案內加入 ts 語法:
// 新增型別支援 (()=>{ function show(msg:string){ //新增 string 的意義在於傳入的 msg值只能是字串,不可以是其他型別 return "字串:"+msg } let str = "前端" console.log(show(str)) })()
此時瀏覽器執行時,會報錯,無法繼續執行。
此時就需要將 ts 檔案編譯為 js 檔案,開啟命令列工具,執行:
tsc 01.ts
執行後會自動生成一個 01.js 檔案,檢視js程式碼內容如下:
function show(msg) { return "字串:" + msg; } (function () { var str = "前端"; console.log(show(str)); })();
總結:
新建一個專案目錄,當前目錄下開啟命令列工具,執行
tsc --init
自動生成 tsconfig.json 檔案,程式碼如下:
{ "compilerOptions": { "target": "es2016", "module": "commonjs", "outDir": "./js", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true, "skipLibCheck": true } }
注:
outDir 表示的是 ts 檔案編譯之後生成 js 檔案的存放目錄。如果屬性值之後的資料夾不存在時,就會自動建立。
strict 表示是嚴格模式。
新建 index.ts 檔案,程式碼如下:
(() => { function showStr(str:string) { return str } let a: string = "前端人" // 呼叫函數 console.log("a",showStr(a)); })()
型別註解:函數地形參後加修飾符,用來限制傳入引數的型別,string 表示只能為字串型別。
在命令列執行
tsc -w //或 tsc -watch
自動生成 js 資料夾,包括 index.js 檔案。執行該命令後,只要 ts 檔案發生改變,就會自動編譯。
一切執行正常,沒有任何錯誤。
如果呼叫函數的引數傳為數值時:
console.log(showStr(123));
此時編輯器內報錯:型別“number”的引數不能賦給型別“string”的引數。
ts 能夠智慧提示問題,是因為 ts 提供了靜態程式碼分析,可以分析程式碼結構和提供的型別註解。
但是 tsc 編譯的時候,雖然會提示錯誤,但它依舊會編譯為 js 檔案,js 在執行的時候不會報錯,因為 js 是弱型別語言。
let isDone: boolean = false;
let name: string = "bob";
let list: number[] = [1, 2, 3];
let arr:[string,number,boolean] = ['str',1,true]
enum Color { red, green, blue }
let notSure:any = 1
function show():void { }
null
和 undefined
function error(message: string): never { throw new Error(message); }
介面簡單點講就是一種約束。在 ts 裡,介面的作用就是為這些型別命名和為你的程式碼或第三方程式碼定義契約。
TypeScript
中的介面是一個非常靈活的概念,除了可用於對類的一部分行為進行抽象以外,也常用於對「物件的形狀(Shape)」進行描述。
使用形式:
(() => { //定義一個介面 interface Person{ firstName:string,//新增型別限定 lastName:string } function showFullName(person:Person) { // 新增型別限定之後,內部會自動提示介面內的欄位 return person.firstName + '_' + person.lastName } const p = { firstName: "Hello", lastName: "World" } console.log("姓名",showFullName(p)); })()
如果把 p 中的 firstName 註釋掉,就會報錯,提示:
在本範例中,介面的意義就是限定傳入 showFullName 函數內的資料屬性的限制。
介面優點:自動檢測傳入的資料是否符合介面規範,如果不符合則會報錯。
Typescript類介紹
傳統的 JavaScript 的程式使用函數和基於原型的繼承來建立可重用的元件,但對於熟悉使用物件導向方式的程式設計師來講就有些棘手,因為他們用的是基於類的繼承並且物件是由類構建出來從 ECMAScript 2015,也就是 ECMAScript 6 開始,JavaScript 程式設計師將能夠使用基於類的物件導向的方式。使用 TypeScript
,我們允許開發者現在就使用這些特性,並且編譯後的 JavaScript 可以在所有主流瀏覽器和平臺上執行,而不需要等到下個JavaScript的版本。
ts 的類只是一個語法糖,本質還是 js 函數實現的。
使用範例:
(() => { //定義一個介面 interface Person{ firstName: string, lastName:string } //定義一個類 class Personal { //定義公共的欄位屬性 firstName: string lastName: string fullName: string // 建構函式 constructor(firstName: string,lastName:string) { //更新屬性資料 this.firstName = firstName this.lastName = lastName this.fullName = this.firstName + this.lastName } } const p = new Personal('你','好') function showFullName(person: Person) { return person.firstName + person.lastName } console.log("p",showFullName(p)); })()
到此這篇關於 typeScript入門基礎介紹的文章就介紹到這了,更多相關 typeScript內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45