有關TypeScript感觸集錦

来源:https://www.cnblogs.com/study-jara/archive/2022/04/06/16106008.html
-Advertisement-
Play Games

1、介面 1.對象中使用中括弧是設置key的類型是字元串,冒號後面就是鍵值對的值; 2.介面只是用來形容給進來的數據必須符合介面類型內容,所以不能賦值; export default interface IBox{ a:number; b:string; [key:string]:number |s ...


1、介面

1.對象中使用中括弧是設置key的類型是字元串,冒號後面就是鍵值對的值;

2.介面只是用來形容給進來的數據必須符合介面類型內容,所以不能賦值;

export  default  interface IBox{
	a:number;
	b:string;
	[key:string]:number |string|boolen|null;
}

3.只讀屬性

interface ILable
{
    lable:string;
    a?:number;
    readonly b:number //只讀
}
//使用
function fn1(obj:ILable){
    
}
function fn2(o:ILable){
    o.lable="ss"
}
fn2({lable:"s",b:3})

4.類介面

  • 可實現多個介面,介面實現的東西,在類中不能缺少任何一個;

  • 類實現介面使用implements;

  • 都具備IB類型,所以數組的類型可以 為這共有的;

  • 沒有介面,就沒有多態

  • 構造函數不能寫返回類型,構造函數可以使用私有類型,但是使用後,則不能在外部實例化

  • set方法不能寫返回類型

  • get方法不能寫參數;

export interface ID{
    run():void;
}
export interface IE{
    new (a:number):ID
}

function fn(className:IE):ID
{
    return new className(3)
}
var o=fn(Boss)

5.有關介面繼承

  • 聲明一個介面,在聲明另一個介面繼承上個介面;讓一個類繼承上述一個介面,此時;

  • 這個類中必須包含上述兩個介面的所有屬性和方法

interface IF    //介面
{
    num:number
}
interface IG extends IF  //介面繼承介面
{
    walk():void
}
    
class Goods implements IG{
num :number=1
walk():void{
}
}

6.介面繼承類

  • 給一個類聲明且賦予方法,讓一個介面繼承這個類,這個介面中可以不包含上個類的屬性和方法;

  • 再讓另一個類繼承這個介面,此時,這個類中必須含有上述介面和類中的所有方法

class Zoom{
    num:number=1;
    play():void{
        console.log("play")
    }
}

interface IH extends Zoom{
    run():void;
}

class Zooms implements IH{
    num: number=2;
    run(): void {
        
    }
    play(): void {
        
    }
}

2、三大修飾符

1、public 公有的

  • 只有共有的實例對象才能調用該方法和屬性(暴露在外),在子類中可以調用獲取覆蓋
  • 該類的實例化對象可以調用public定義的屬性和方法(包括靜態.只讀)
  • 子類中的方法中可以通過實例this調用獲取peotected定義的屬性和方法(包括靜態和只讀)
  • 子類中可以重寫和覆蓋public定義的方法(靜態)

2、private 私有的

  • 只能當前類中調用執行(構造函數可以使用private,但是使用後,則不能再外部實例化,也就是不能new ===》單例模式採用);
  • 該類的實例化對象不能調用private定義的屬性和方法(包括靜態,只讀)
  • 子類的方法中不可以獲取private定義的屬性和方法(靜態和只讀)
  • 子類中不可以重寫和覆蓋private定義的方法;
  • 只能在當前類的方法中調用使用private定義的屬性和方法;

3、protected 受保護的

  • 在子類中可以調用獲取覆蓋;繼承後的類可以通過在類中方法表示當前調用的實例化對象獲取父類的共有和受保護的方法;
  • 該類的實例化對象不能調用protected定義的屬性和方法(包括靜態,只讀)
  • 子類的方法中可以通過實例this調用獲取protected定義的屬性和方法;
  • 子類中可以重寫和覆蓋使用protected定義的方法(靜態)

4、註意點:在繼承類中,如果要覆蓋或者修改父類的方法時,必須要使用public 或者 protected;只有這兩者才會被子類所調用;

3.靜態方法、常量

1.靜態常量

 public static readonly SPEED:number=2;  //readonly在static的後面

2.靜態方法

public static NUM:number=3;  //在實例化調用時只能使用該類調用    rect.NUM();

4、泛型

1、實例

  • 實例化以後的類型就是T類型

  • 當使用create <T>時,傳入地是一個類名,給的是一個類比如 createB(); ,而不是實例化對象,(傳類的寫法)

  • 以後傳參有兩種,一種是傳入類,一種是傳入實例化對象

function create<T>(cls:{new():T}){
    var a:T=new cls();
    console.log(a);
}
create<IB>(IB)

//   傳實例化對象寫法
function createItem<T>(item:T){

}
 //當使用這個實例化對象時,這兒只能傳入實例化對象  比如  createItem<B>(new B())
var n=new IB();
createItem<IB>(b)

2、泛型類

 在類中使用泛型,也就是通過將類設置成為IC的泛型,這樣就可以去得到他們的類

//聲明一個IA類
export default class IA{
    constructor(){

    }
    public run():void{
        console.log("AAA");
    }
}
//聲明一個IB類
export default class IB{
    constructor(){

    }
    public play():void{
        console.log("BBB");
    }
}
//在IC類中使用泛型  通過對IC設置泛型,在實例IC的時候,泛型使用IA和IB類型
export default class IC<T>{
    constructor(){

    }
    public run(item:T):void{
        console.log(item);
    }
}
//實例
var c:IC<IA>=new IC();
c.run(new IA());

var c1:IC<IB>=new IC();
c1.run(new IB());

5、附加配置

 

#### 1.前端配置

```javascript
 "target": "es5",    
 "lib": ["ES2016","DOM"],  
 "experimentalDecorators": true,
  "module": "amd",                           
  "rootDir": "./src",
   "declaration": true,  
     "declarationMap": true, 
      "sourceMap": true,  
     "outDir": "./dist/js"  
    "downlevelIteration": true,  
   "esModuleInterop": true,       
    "forceConsistentCasingInFileNames": true,    
   "strict": true,       
```

#### 2.服務端配置

```
"target": "es5",   
"lib": ["ES2015","DOM"],
 "experimentalDecorators": true, 
  "module": "commonjs",
```

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、概述 Hive是基於Hadoop的一個數據倉庫(Data Aarehouse,簡稱數倉、DW),可以將結構化的數據文件映射為一張資料庫表,並提供類SQL查詢功能。是用於存儲、分析、報告的數據系統。 在Hadoop生態系統中,HDFS用於存儲數據,Yarn用於資源管理,MapReduce用於數據處 ...
  • 本文是 OpenAtom OpenHarmony(以下簡稱“OpenHarmony”)標準設備應用開發的第一篇文章。這一篇我們主要聚焦於如何在標準設備上運行一個最簡單的 OpenHarmony 程式。 ...
  • OpenHarmony 開源開發者成長計劃第二期知識賦能直播課程以入門為主,共設置 8 節課,覆蓋了應用開發、設備開發、內核驅動等多個技術領域。 ...
  • 前言 ​ 我們主要介紹如何實現控制項點擊事件($AppClick)的全埋點。在介紹如何實現之前,我們需要先瞭解一下,在 UIKit 框架下,處理點擊或拖動事件的 Target-Action 設計模式。 一、 Target-Action ​ Target-Action,也叫目標-動作模式,即當某個事件發 ...
  • 日益多元化的廣告形式以及投放成本的不斷攀升,讓廣告主們更加關註每一次廣告投放帶來的實際價值。 然而,廣告主一般僅能從平臺獲得展示、點擊、下載等前端效果欄位,實際的用戶註冊、激活等後端深度轉化指標並無法獲取。 如何科學衡量廣告投放效果? 新增用戶到底來源於自然增量還是推廣買量?這些,您通過HMS Co ...
  • 關於ANSI Color的一些鮮為人知的秘密 揭秘如何在終端中顯示五彩斑斕的字元 ...
  • 利用JavaScript函數做一個簡單的倒計時 <script> // 代碼如下: function countDown(time) { var nowTime = +new Date(); // 返回的是當前時間總的毫秒數 var inputTime = +new Date(time); // 返 ...
  • 前言 截止到四月,我在目前這家公司工作已是整整一年時間。多次想寫篇文章做做總結,記錄一下這一年的成長。 工作 必要的技術廣度 足夠寬泛的知識面能夠幫助企業做出提效降本的正確決策。為此我還做過一篇記錄。鏈接:https://www.cnblogs.com/WeiFE/p/15510423.html 技 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...