当前位置: 首页 > news >正文

网站建设etw深圳租赁住房和建设局网站

网站建设etw,深圳租赁住房和建设局网站,做网站容易还是做小程序容易,安徽注册公司网上申请入口命名空间 简介 namespace 是一种将相关代码组织在一起的方式。出现在 ES 模块诞生之前,作为 TypeScript 自己的模块格式而发明的。但是,自从有了 ES 模块,官方已经不推荐使用 namespace 了。 基本用法 namespace 用来建立一个容器&#x…

命名空间

简介

namespace 是一种将相关代码组织在一起的方式。出现在 ES 模块诞生之前,作为 TypeScript 自己的模块格式而发明的。但是,自从有了 ES 模块,官方已经不推荐使用 namespace 了。

基本用法

namespace 用来建立一个容器,内部的所有变量和函数,都必须在这个容器里面使用。

namespace Utils {function isString(value: any) {return typeof value === "string";}// 正确isString("yes");
}Utils.isString("no"); // 报错

如果要在命名空间以外使用内部成员,就必须为该成员加上 export 前缀,表示对外输出该成员。

namespace Utility {export function log(msg: string) {console.log(msg);}export function error(msg: string) {console.error(msg);}
}Utility.log("Call me");
Utility.error("maybe!");

namespace 编译后会变成一个值,保留在编译后的代码中。它不是纯的类型代码。

namespace 内部还可以使用 import 命令输入外部成员,相当于为外部成员起别名。当外部成员的名字比较长时,别名能够简化代码。

namespace Utils {export function isString(value: any) {return typeof value === "string";}
}namespace App {import isString = Utils.isString;isString("yes");// 等同于Utils.isString("yes");
}

import 命令也可以在 namespace 外部,指定别名。

namespace Shapes {export namespace Polygons {export class Triangle {}export class Square {}}
}import polygons = Shapes.Polygons;// 等同于 new Shapes.Polygons.Square()
let sq = new polygons.Square();

namespace 可以嵌套。

namespace Utils {export namespace Messaging {export function log(msg: string) {console.log(msg);}}
}// 使用嵌套的命名空间,必须从最外层开始引用
Utils.Messaging.log("hello"); // "hello"

namespace 不仅可以包含实义代码,还可以包括类型代码。

namespace N {export interface MyInterface {}export class MyClass {}
}

namespace 与模块的作用是一致的,都是把相关代码组织在一起,对外输出接口。

区别是一个文件只能有一个模块,但可以有多个 namespace。

:::tip
由于模块可以取代 namespace,而且是 JavaScript 的标准语法,还不需要编译转换,所以建议总是使用模块,替代 namespace。
:::

如果 namespace 代码放在一个单独的文件里,那么引入这个文件需要使用三斜杠的语法。

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

namespace 的输出

namespace 本身也可以使用 export 命令输出,供其他文件使用。

// shapes.ts
export namespace Shapes {export class Triangle {// ...}export class Square {// ...}
}

其他脚本文件使用 import 命令,加载这个命名空间。

// 写法一
import { Shapes } from "./shapes";
let t = new Shapes.Triangle();// 写法二
import * as shapes from "./shapes";
let t = new shapes.Shapes.Triangle();

不过还是建议使用模块,采用模块的输出和输入。

namespace 的合并

多个同名的 namespace 会自动合并,这一点跟 interface 一样。

namespace Animals {export class Cat {}
}
namespace Animals {export interface Legged {numberOfLegs: number;}export class Dog {}
}// 等同于
namespace Animals {export class Cat {}export interface Legged {numberOfLegs: number;}export class Dog {}
}

合并命名空间时,命名空间中的非 export 的成员不会被合并,且它们只能在各自的命名空间中使用。

namespace N {const a = 0;export function foo() {console.log(a); // 正确}
}namespace N {export function bar() {foo(); // 正确console.log(a); // 报错}
}

命名空间还可以跟同名函数合并,但是要求同名函数必须在命名空间之前声明。

:::tip
这样做是为了确保先创建出一个函数对象,然后同名的命名空间就相当于给这个函数对象添加额外的属性。
:::

function f() {return f.version;
}namespace f {export const version = "1.0";
}f(); // '1.0'
f.version; // '1.0'

命名空间也能与同名 class 合并,同样要求 class 必须在命名空间之前声明,原因同上。

class C {foo = 1;
}namespace C {export const bar = 2;
}C.bar; // 2

命名空间还能与同名 Enum 合并。

enum E {A,B,C,
}namespace E {export function foo() {console.log(E.C);}
}E.foo(); // 2

:::warning
Enum 成员与命名空间导出成员不允许同名。
:::

enum E {A, // 报错B,
}namespace E {export function A() {} // 报错
}
http://www.dtcms.com/a/478931.html

相关文章:

  • 人力网站建设的建议wordpress加百度广告代码出问题
  • Mozilla 项目
  • 今日行情明日机会——20251013
  • 关于解决js中MediaRecorder录制的webm视频没有进度条的问题
  • 红日靶场(二)学习过程详细记录
  • 【多线程】门栓/闭锁(Latch/CountDownLatch)
  • [1-02-02].[第01章:HTML + CSS
  • 手机必备网站软件技术专科生的出路
  • 网站空间续费一年多少钱怎么弄推广广告
  • 一个做任务的网站如何绑定域名wordpress
  • 当ubuntu 系统的IP地址修改之后,gitlab服务应该如何修改?
  • 怎么做自己的公司网站本地服务器 wordpress
  • 网站制作 优帮云做淘宝客网站需要做后台吗
  • xsync.sh分发脚本和命令执行脚本
  • 深圳高端网站设计公司大连网站建设免费
  • mysql DATE_SUB函数 对日期或时间进行减法运算
  • 企业微信网站开发公司网易企业邮箱怎么找回密码
  • 力扣热题100p128最长连续序列
  • 【LeetCode热题100(42/100)】将有序数组转换为二叉搜索树
  • google网站建设网站开发答辩ppt
  • 超越CNN:GCN如何重塑图像处理
  • A100云服务器租赁:边缘计算时代的算力新形态
  • 建设项目环评验收网站做网站都需要年服务费吗
  • js中 btoa 方法 和 atob方法介绍
  • 做网络写手 哪个网站比较好亚马逊deal网站怎么做
  • css布局的几种方式
  • 前端数值运算精度丢失问题及解决方案
  • 免费建站软件有哪些苏州建行网站首页
  • 极海APM32F107V6 移植FreeRTOS+CMSIS-RTOS V2
  • Centos Stream 8 搭建Cas Server