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

淺析TypeScript 命名空間

 更新時(shí)間:2020年03月19日 14:26:16   作者:X W F  
命名空間一個(gè)最明確的目的就是解決重名問題。這篇文章主要介紹了TypeScript 命名空間的相關(guān)知識(shí),本文通過實(shí)例詳解給大家介紹的非常詳細(xì),需要的朋友可以參考下

TypeScript 是 JavaScript 的一個(gè)超集,支持 ECMAScript 6 標(biāo)準(zhǔn)。

TypeScript 由微軟開發(fā)的自由和開源的編程語言。

TypeScript 設(shè)計(jì)目標(biāo)是開發(fā)大型應(yīng)用,它可以編譯成純 JavaScript,編譯出來的 JavaScript 可以運(yùn)行在任何瀏覽器上。

命名空間一個(gè)最明確的目的就是解決重名問題。

假設(shè)這樣一種情況,當(dāng)一個(gè)班上有兩個(gè)名叫小明的學(xué)生時(shí),為了明確區(qū)分它們,我們?cè)谑褂妹种?,不得不使用一些額外的信息,比如他們的姓(王小明,李小明),或者他們父母的名字等等。

命名空間定義了標(biāo)識(shí)符的可見范圍,一個(gè)標(biāo)識(shí)符可在多個(gè)名字空間中定義,它在不同名字空間中的含義是互不相干的。這樣,在一個(gè)新的名字空間中可定義任何標(biāo)識(shí)符,它們不會(huì)與任何已有的標(biāo)識(shí)符發(fā)生沖突,因?yàn)橐延械亩x都處于其他名字空間中。

TypeScript 中命名空間使用 namespace 來定義,語法格式如下:

namespace SomeNameSpaceName { 
 export interface ISomeInterfaceName {  } 
 export class SomeClassName {  } 
}

以上定義了一個(gè)命名空間 SomeNameSpaceName,如果我們需要在外部可以調(diào)用 SomeNameSpaceName 中的類和接口,則需要在類和接口添加 export 關(guān)鍵字。

要在另外一個(gè)命名空間調(diào)用語法格式為:

SomeNameSpaceName.SomeClassName;

如果一個(gè)命名空間在一個(gè)單獨(dú)的 TypeScript 文件中,則應(yīng)使用三斜杠 /// 引用它,語法格式如下:

/// <reference path = "SomeFileName.ts" />

以下實(shí)例演示了命名空間的使用,定義在不同文件中:

IShape.ts 文件代碼:

namespace Drawing { 
 export interface IShape { 
  draw(); 
 }
}

Circle.ts 文件代碼:

/// <reference path = "IShape.ts" /> 
namespace Drawing { 
 export class Circle implements IShape { 
  public draw() { 
   console.log("Circle is drawn"); 
  } 
 }
}

Triangle.ts 文件代碼:

/// <reference path = "IShape.ts" /> 
namespace Drawing { 
 export class Triangle implements IShape { 
  public draw() { 
   console.log("Triangle is drawn"); 
  } 
 } 
}

TestShape.ts 文件代碼:

/// <reference path = "IShape.ts" /> 
/// <reference path = "Circle.ts" /> 
/// <reference path = "Triangle.ts" /> 
function drawAllShapes(shape:Drawing.IShape) { 
 shape.draw(); 
} 
drawAllShapes(new Drawing.Circle());
drawAllShapes(new Drawing.Triangle());

使用 tsc 命令編譯以上代碼:

tsc --out app.js TestShape.ts 

得到以下 JavaScript 代碼:

JavaScript
/// <reference path = "IShape.ts" /> 
var Drawing;
(function (Drawing) {
 var Circle = /** @class */ (function () {
  function Circle() {
  }
  Circle.prototype.draw = function () {
   console.log("Circle is drawn");
  };
  return Circle;
 }());
 Drawing.Circle = Circle;
})(Drawing || (Drawing = {}));
/// <reference path = "IShape.ts" /> 
var Drawing;
(function (Drawing) {
 var Triangle = /** @class */ (function () {
  function Triangle() {
  }
  Triangle.prototype.draw = function () {
   console.log("Triangle is drawn");
  };
  return Triangle;
 }());
 Drawing.Triangle = Triangle;
})(Drawing || (Drawing = {}));
/// <reference path = "IShape.ts" /> 
/// <reference path = "Circle.ts" /> 
/// <reference path = "Triangle.ts" /> 
function drawAllShapes(shape) {
 shape.draw();
}
drawAllShapes(new Drawing.Circle());
drawAllShapes(new Drawing.Triangle());

使用 node 命令查看輸出結(jié)果為:

$ node app.js
Circle is drawn
Triangle is drawn

嵌套命名空間

命名空間支持嵌套,即你可以將命名空間定義在另外一個(gè)命名空間里頭。

namespace namespace_name1 { 
 export namespace namespace_name2 {
  export class class_name { } 
 } 
}

成員的訪問使用點(diǎn)號(hào) . 來實(shí)現(xiàn),如下實(shí)例:

Invoice.ts 文件代碼:

namespace Runoob { 
 export namespace invoiceApp { 
  export class Invoice { 
   public calculateDiscount(price: number) { 
   return price * .40; 
   } 
  } 
 } 
}

InvoiceTest.ts 文件代碼:

/// <reference path = "Invoice.ts" />
var invoice = new Runoob.invoiceApp.Invoice(); 
console.log(invoice.calculateDiscount(500));

使用 tsc 命令編譯以上代碼:

tsc --out app.js InvoiceTest.ts

得到以下 JavaScript 代碼:

JavaScript
var Runoob;
(function (Runoob) {
 var invoiceApp;
 (function (invoiceApp) {
  var Invoice = /** @class */ (function () {
   function Invoice() {
   }
   Invoice.prototype.calculateDiscount = function (price) {
    return price * .40;
   };
   return Invoice;
  }());
  invoiceApp.Invoice = Invoice;
 })(invoiceApp = Runoob.invoiceApp || (Runoob.invoiceApp = {}));
})(Runoob || (Runoob = {}));
/// <reference path = "Invoice.ts" />
var invoice = new Runoob.invoiceApp.Invoice();
console.log(invoice.calculateDiscount(500));

使用 node 命令查看輸出結(jié)果為:

$ node app.js
200

TypeScript 語言特性

TypeScript 是一種給 JavaScript 添加特性的語言擴(kuò)展。增加的功能包括:

  • 類型批注和編譯時(shí)類型檢查
  • 類型推斷
  • 類型擦除
  • 接口
  • 枚舉
  • Mixin
  • 泛型編程
  • 名字空間
  • 元組
  • Await

以下功能是從 ECMA 2015 反向移植而來:

  • 模塊
  • lambda 函數(shù)的箭頭語法
  • 可選參數(shù)以及默認(rèn)參數(shù)

JavaScript 與 TypeScript 的區(qū)別

TypeScript 是 JavaScript 的超集,擴(kuò)展了 JavaScript 的語法,因此現(xiàn)有的 JavaScript 代碼可與 TypeScript 一起工作無需任何修改,TypeScript 通過類型注解提供編譯時(shí)的靜態(tài)類型檢查。

TypeScript 可處理已有的 JavaScript 代碼,并只對(duì)其中的 TypeScript 代碼進(jìn)行編譯。

總結(jié)

到此這篇關(guān)于TypeScript 命名空間的文章就介紹到這了,更多相關(guān)TypeScript 命名空間內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 微信小程序轉(zhuǎn)化為uni-app項(xiàng)目的方法示例

    微信小程序轉(zhuǎn)化為uni-app項(xiàng)目的方法示例

    這篇文章主要介紹了微信小程序轉(zhuǎn)化為uni-app項(xiàng)目的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • js實(shí)現(xiàn)類似新浪微博首頁內(nèi)容漸顯效果的方法

    js實(shí)現(xiàn)類似新浪微博首頁內(nèi)容漸顯效果的方法

    這篇文章主要介紹了js實(shí)現(xiàn)類似新浪微博首頁內(nèi)容漸顯效果的方法,實(shí)例分析了漸顯效果的實(shí)現(xiàn)要點(diǎn)與方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • JavaScript必看小技巧(必看)

    JavaScript必看小技巧(必看)

    下面小編就為大家?guī)硪黄狫avaScript必看小技巧(必看)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-06-06
  • uniapp常用路由跳轉(zhuǎn)的幾種方式(navigateTo、redirectTo...)

    uniapp常用路由跳轉(zhuǎn)的幾種方式(navigateTo、redirectTo...)

    uni-app有兩種方式進(jìn)行路由跳轉(zhuǎn),下面這篇文章主要給大家介紹了關(guān)于uniapp常用路由跳轉(zhuǎn)的幾種方式(navigateTo、redirectTo...),文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • javascript不同頁面?zhèn)髦档母倪M(jìn)版

    javascript不同頁面?zhèn)髦档母倪M(jìn)版

    改進(jìn)點(diǎn):支持同頁面有多個(gè)文本框,可自動(dòng)向不同的文本框傳值。先看演示吧
    2008-09-09
  • 通過JavaScript實(shí)現(xiàn)CSS和JS文件的動(dòng)態(tài)加載

    通過JavaScript實(shí)現(xiàn)CSS和JS文件的動(dòng)態(tài)加載

    在現(xiàn)代Web開發(fā)中,動(dòng)態(tài)加載CSS和JavaScript文件是一個(gè)常見的需求,這種技術(shù)可以用來優(yōu)化頁面加載速度,減少初始加載時(shí)間,并提高用戶體驗(yàn),本文將詳細(xì)介紹如何通過JavaScript實(shí)現(xiàn)CSS和JS文件的動(dòng)態(tài)加載,包括不同的加載方法、注意事項(xiàng)以及最佳實(shí)踐
    2024-11-11
  • Js四則運(yùn)算函數(shù)代碼

    Js四則運(yùn)算函數(shù)代碼

    javascript的除法結(jié)果會(huì)有誤差,在兩個(gè)浮點(diǎn)數(shù)相除的時(shí)候會(huì)比較明顯。這個(gè)函數(shù)返回較為精確的除法結(jié)果
    2012-07-07
  • FF IE瀏覽器修改標(biāo)簽透明度的方法

    FF IE瀏覽器修改標(biāo)簽透明度的方法

    本文為大家介紹下FF IE瀏覽器修改標(biāo)簽透明度的方法,需要的朋友可以參考下
    2014-01-01
  • 一文帶你理解JS中的原型和原型鏈

    一文帶你理解JS中的原型和原型鏈

    在學(xué)習(xí)JavaScript中的繼承機(jī)制時(shí),我們常常會(huì)遇到原型和原型鏈這兩個(gè)概念,在初學(xué)階段,不理解這些概念很容易陷入迷茫,甚至?xí)?dǎo)致學(xué)習(xí) JS 的路程變得曲折,本文將介紹JavaScript原型和原型鏈的概念、設(shè)計(jì)思想以及相關(guān)的使用方法,需要的朋友可以參考下
    2023-07-07
  • JavaScript將單位有秒s的數(shù)據(jù)轉(zhuǎn)換為00:00:00格式

    JavaScript將單位有秒s的數(shù)據(jù)轉(zhuǎn)換為00:00:00格式

    在前端開發(fā)中,時(shí)間格式化是一個(gè)高頻需求,無論是視頻播放時(shí)長、倒計(jì)時(shí)組件還是數(shù)據(jù)報(bào)表,都需要將原始的秒數(shù)轉(zhuǎn)換為易讀的時(shí)分秒格式,今天我們來深入分析一段實(shí)用的時(shí)間格式化代碼,看看它是如何工作的,以及如何進(jìn)一步優(yōu)化提升,需要的朋友可以參考下
    2025-11-11

最新評(píng)論

深圳市| 逊克县| 寿阳县| 邳州市| 仙居县| 屯昌县| 深州市| 监利县| 万盛区| 罗甸县| 天峻县| 灯塔市| 双江| 鹰潭市| 连云港市| 德昌县| 台前县| 通江县| 靖江市| 库尔勒市| 阜新市| 梁河县| 七台河市| 沙雅县| 凤阳县| 奎屯市| 姜堰市| 贵阳市| 灌云县| 梁河县| 白城市| 开江县| 阿瓦提县| 寿宁县| 辰溪县| 邮箱| 泗阳县| 中江县| 永仁县| 湘潭县| 多伦县|