摘要:聯(lián)合類型聯(lián)合類型表示一個(gè)值可以時(shí)集中類型之一,使用進(jìn)行分隔每種類行。聯(lián)合類型的變量在被賦值的時(shí)候,根據(jù)類型推論的規(guī)則,推斷出一個(gè)類型。
聯(lián)合類型
聯(lián)合類型表示一個(gè)值可以時(shí)集中類型之一,使用 | 進(jìn)行分隔每種類行。
聯(lián)合類型的變量在被賦值的時(shí)候,根據(jù)類型推論的規(guī)則,推斷出一個(gè)類型。
聯(lián)合類型的變量當(dāng)被推斷出類型后,就變得和正常聲明的變量一樣:
let ffffd: string | number; ffffd = "hello world"; // ffffd被推斷成了 string,訪問(wèn) length 屬性不會(huì)報(bào)錯(cuò) console.log(ffffd.length); ffffd = 255; // 報(bào)錯(cuò) ffffd 被推斷成了 number,訪問(wèn) length 屬性時(shí)就報(bào)錯(cuò)了 console.log(ffffd.length);
聯(lián)合類型的變量沒(méi)有被推斷出類型時(shí),這個(gè)變量只能訪問(wèn)聯(lián)合類型中所有類型共有的屬性:
function func(name: string, age: string | number) { // Error,Property "length" does not exist on type "string | number".Property "length" does not exist on type "number". console.log(age.length); // 編譯通過(guò) console.log(age.toString()); }交叉類型
交叉類型是將多個(gè)類型合并為一個(gè)類型,交叉類型的變量擁有所有類型的所有屬性、方法,使用 & 進(jìn)行合并類型:
function extend(first: T, second: U): T & U { const result = {}; for (let id in first) { ( result)[id] = first[id]; } for (let id in second) { if (!result.hasOwnProperty(id)) { (result)[id] = second[id]; } } return result; } const x = extend({ a: "hello" }, { b: 42 }); // 現(xiàn)在 x 擁有了 a 屬性與 b 屬性 const a = x.a; const b = x.b;
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/106783.html
摘要:函數(shù)類型函數(shù)返回值類型我們可以給每個(gè)參數(shù)添加類型之后再為函數(shù)本身添加返回值類型。能夠根據(jù)返回語(yǔ)句自動(dòng)推斷出返回值類型,所以通??梢允÷运涿瘮?shù)完整函數(shù)類型完整的函數(shù)類型包含兩部分參數(shù)類型和返回值類型。 函數(shù)是 JavaScript 的第一等公民,函數(shù)在 JavaScript 中可以實(shí)現(xiàn)抽象層、模擬類、信息隱藏和模塊等等。TypeScript 在一定基礎(chǔ)上擴(kuò)展了函數(shù)的功能。 函數(shù)類型 ...
摘要:通常會(huì)定義為函數(shù)的返回值一個(gè)類型的變量是沒(méi)有生命用處的,因?yàn)轭愋偷淖兞恐荒苜x值為。和有一些區(qū)別的,函數(shù)沒(méi)有返回值時(shí)返回類型為的方法,即使沒(méi)有寫(xiě)明語(yǔ)句,也會(huì)在函數(shù)執(zhí)行完的時(shí)候,隱式地返回一個(gè)類型。中新增加的變量聲明方式。 類型注解 類型注解使用 :TypeAnnotation 語(yǔ)法。類型聲明空間中可用的任何內(nèi)容都可以用作類型注解。 const num: number = 123; fun...
摘要:自帶的內(nèi)置對(duì)象都可以直接在中當(dāng)作定義好的類型。的內(nèi)置對(duì)象標(biāo)準(zhǔn)提供了常用的內(nèi)置對(duì)象等。在不需要額外引入就可以直接使用這些內(nèi)置對(duì)象用寫(xiě)不是內(nèi)置對(duì)象的一部分,想要寫(xiě)時(shí)提示,需要引入第三方聲明文件 JavaScript 自帶的內(nèi)置對(duì)象都可以直接在 TypeScript 中當(dāng)作定義好的類型。 TypeScript 核心庫(kù)的定義文件 TypeScript 核心庫(kù)的定義文件定義了所有瀏覽器環(huán)境需要用...
摘要:接口的作用是聲明變量的結(jié)構(gòu)和方法,但不做具體的實(shí)現(xiàn)。這兩個(gè)使用場(chǎng)景不同。額外的屬性檢查從字面上的意思看,其實(shí)就是對(duì)接口未定義的屬性進(jìn)行檢查。上面的例子,定義了接口,它具有索引簽名。它不會(huì)幫你檢查類是否具有某些私有成員。 接口的作用是聲明變量的結(jié)構(gòu)和方法,但不做具體的實(shí)現(xiàn)。通常,接口會(huì)強(qiáng)制對(duì)所有成員進(jìn)行類型檢查,包括數(shù)量和類型: interface Name { first: s...
摘要:當(dāng)滿足以下條件時(shí),枚舉成員被當(dāng)作是常數(shù)不具有初始化函數(shù)并且之前的枚舉成員是常數(shù)。在這種情況下,當(dāng)前枚舉成員的值為上一個(gè)枚舉成員的值加。但第一個(gè)枚舉元素是個(gè)例外。枚舉成員使用常數(shù)枚舉表達(dá)式初始化。 數(shù)字類型枚舉 常規(guī)枚舉的值都是數(shù)字類型,因此被稱為數(shù)字類型枚舉: enum Color { Red, Blue, Green } console.log(Color.R...
閱讀 2722·2021-11-11 16:54
閱讀 3777·2021-08-16 10:46
閱讀 3510·2019-08-30 14:18
閱讀 3098·2019-08-30 14:01
閱讀 2798·2019-08-29 14:15
閱讀 2094·2019-08-29 11:31
閱讀 3153·2019-08-29 11:05
閱讀 2656·2019-08-26 11:54