日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

函数没有“as”子句;假定返回类型为 object。_TypeScript笔记(一)类型amp;接口...

發布時間:2023/12/31 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数没有“as”子句;假定返回类型为 object。_TypeScript笔记(一)类型amp;接口... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據類型

TS是強類型的JS,TS會被編譯成JS在瀏覽器環境下運行,在遇到類型錯誤時,TS會在編譯時類型檢查并報錯,在上傳到服務器之前報錯,這就意味著用戶不會感知到TS的類型錯誤,而JS在執行時報錯,只有在執行到代碼塊時才會發現錯誤;并且在寫TS時,只要遇到類型錯誤都會有提示,可以提前預防很多錯誤。

目前JS有七種數據類型分別是 object string number boolean null undefined symbol,在TS的數據類型中,新增了五種:enum any void never unknown

let object: object; // 聲明對象 let str: string; // 聲明字符串 let num: number; // 聲明數值 let bool: boolean; // 聲明布爾值

Null和Undefined

let u: undefined; let n: null;

這將意味著u和n無法被重復賦值

null和undefined是所有類型的子類型,因此任意類型的值都可以接受undefined,null

let num: number = undefined;

在TS里,聲明數組的方式有兩種:

let arr1: string[]; // 聲明string類型的數組 let arr2: Array<string>;

多維數組只有一種聲明方式:

let arr3: Array<Array<string>>;

此外TS提供元組:允許表示一個已知元素數量和類型的數組,各元素的類型不必相同。

let arr4: [string, number];// 聲明一個包含兩個元素的數組,第一項類型為string,第二項為number

枚舉enum為一組數值提供名字

enum Subject{Chinese,English } let ch:Subject = Subject.Chinese; console.log(ch); // 0 let en:Subject = Subject.English; console.log(en); // 1

默認索引從0開始,語文是0,英語是1, 可以設置從某個值開始,也可以設定為有意義的字符串

enum Subject{Chinese = 'ch',English = 'en' } let ch:Subject = Subject.Chinese; console.log(ch); // ch let en:Subject = Subject.English; console.log(en); // en

any表任意類型

let arr5: any[] = [1, '2', '', {}]; //聲明一個包含任意類型的數組 function fn(name: any){ // 聲明一個參數name為任意類型的函數console.log(name) }

void類型,一般用作函數返回值的類型

當確定函數沒有返回值時使用,使用return將提示錯誤

function fn(name: any): void{ console.log(name); }

never 表示的是那些永不存在的值的類型

never類型是那些總是會拋出異常或根本就不會有返回值的函數表達式或箭頭函數表達式的返回值類型; 變量也可能是never類型,當它們被永不為真的類型保護所約束時。function error(): never{ // 專門用來拋出錯誤throw new Error(`It's an error!`); }function submit(number:number){if(number){error()} } submit(1) // Error: It's an error!

unknown 未知類型

unknown 比 any 安全,unknown 類型的值不可以隨意操作

interface Data {[key: string]: unknown }interface SetupContext {attrs: Dataslots: Slotsemit: (event: string, ...args: unknown[]) => void }

類型斷言:假定程序員已經進行了類型檢查,TS編譯器不再對已經斷言的變量進行特殊的類型檢查,斷言表示我確定,我保證類型沒有問題

let vari = '123' console.log((<string>vari).split('')) // 尖括號語法 console.log((vari as string).split('')) //as語法

但是如果編譯器發現斷言的類型是錯的,依然會提示錯誤

TS中的類型轉換

TS是強類型,非常抵抗變量的類型變來變去,比如使用 +string,number+'' ,!!number,如果確實需要的話,聲明一個新的變量指定類型

let num: number = 1; let str: string = num.toString()

最好使用Number() String() .toString() Boolean() JSON.stringify() JSON.parse()等顯式類型轉換

接口 interface

TS會對變量的結構進行類型檢查,接口就是來定契約的

interface Personq { // 定義一個對象接口name: stringage: numbergender: string }let person: Personq = { name: 'alias', age: 18, gender: 'women' }

interface提供只讀屬性,可選屬性,額外屬性,屬性也可為函數

interface Persoxn {name: stringreadonly age: number // 只讀屬性gender?: string // 可選屬性[propName: string]: any // 額外屬性:當不確定還需要哪些屬性,可用propName占位say(word: string): void //函數 }

函數接口

interface Function{(name:string,age:number): void }let fn: Function = (name,age)=>{} fn('alias', 18)

ps: 如果函數在聲明時不指定參數不會有錯誤提示,但在調用時會提示

接口就是用代碼描述一個對象必須有什么屬性(包括方法),但如果想傳入額外的屬性可以使用類型斷言

interface SquareConfig { // 定義一個正方形的配置width?: number; }function createSquare(config: SquareConfig) { // 創建一個正方形return config; } let mySquare = createSquare({ width: 100, color: 0.5 } as SquareConfig); // 額外添加color配置 console.log(mySquare);

數組接口

interface PriceArray {[idx: number]: number; }let arr: PriceArray; arr = [11, 12];let myStr: number = arr[0]; console.log(myStr);

接口的繼承

一個接口可以繼承另一個接口的屬性或方法

interface clerk{skill1: any }interface leader extends clerk{skill2: any }interface boss extends leader{skill3: any }let myBoss = <boss>{}; // 類型斷言 myBoss.skill1 = 'xx' myBoss.skill2 = 'yy' myBoss.skill3 = 'zz'

END!

總結

以上是生活随笔為你收集整理的函数没有“as”子句;假定返回类型为 object。_TypeScript笔记(一)类型amp;接口...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。