TypeScript从精通到入门11:声明合并

TypeScript的声明合并是指编译器将对程序中多处出现的同一名字的两个及以上独立声明合并为单一声明,合并后的声明将具有原先所有独立声明的特性。
这是TypeScript中一个非常重要的概念,它允许开发者在不同的地方对同一个实体(如命名空间、类型或值)进行扩展,从而提供了更大的灵活性和代码组织性。

合并接口

接口的合并其实是将两个同名的接口,合并到同一个接口中。

interface Box {
    height: number;
    width: number;
}

interface Box {
    scale: number;
}

let box: Box = {height: 5, width: 6, scale: 10};

如果同名接口中出现同名函数,那么这些函数就会成为一个函数的重载。


interface Box{
    getVal(val: number): number
}
interface Box{
    getVal(val: string): string
}
 
// 相当于
interface Box{
    getVal(val: number): number
    getVal(val: string): string
}
 
// src/index.ts
const box: Box= {
    getVal(val: any) {
       return val
    }
}

合并命名空间
declare namespace global_type {
    interface Box {
        name: string
        color: string
    }
}
declare namespace global_type {
    let box: Box
}
 
// 相当于
declare namespace global_type {
    interface Box {
        name: string
        color: string
    }
}
 
global_type.box = {
    name: "",
    color: ""
}
合并命名空间和类
class Box {
    age: number
}
namespace Box {
    export let age: number = 10
}
const box = new Box()
box.age = Box.age

命名空间声明不能位于与之合并的类或函数前

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是 TypeScript入门精通教程: # TypeScript 入门教程 ## 什么是 TypeScriptTypeScript 是一种由微软开发的静态类型语言,它是 JavaScript 的超集,意味着它包含了 JavaScript 的所有内容,并且添加了一些新的特性。TypeScript 可以编译成纯 JavaScript,并且可以在任何地方运行。 TypeScript 的主要特点包括: - 强类型:TypeScript 可以在编译时检查类型错误,从而提高代码质量和可维护性。 - 面向对象:TypeScript 支持类、接口、继承等面向对象编程特性。 - 模块化:TypeScript 支持模块化,可以将代码分成多个模块,以便更好地组织和管理代码。 - 可读性:TypeScript 支持类型注解和接口定义,使代码更容易阅读和理解。 ## 安装 TypeScript 要开始使用 TypeScript,您需要先安装 TypeScript 编译器。您可以使用以下命令在全局范围内安装 TypeScript: ``` npm install -g typescript ``` ## 第一个 TypeScript 程序 创建一个名为 `hello.ts` 的文件,并将以下代码添加到文件中: ```typescript function sayHello(name: string) { console.log(`Hello, ${name}!`); } sayHello("TypeScript"); ``` 要编译 TypeScript 文件,请在命令行中导航到 TypeScript 文件所在的目录,并运行以下命令: ``` tsc hello.ts ``` 这将生成一个名为 `hello.js` 的 JavaScript 文件。要运行这个 JavaScript 文件,请在命令行中运行以下命令: ``` node hello.js ``` 这将输出以下内容: ``` Hello, TypeScript! ``` ## 类型注解 TypeScript 支持类型注解,可以在变量名后面使用冒号来指定变量的类型。例如: ```typescript let name: string = "TypeScript"; let age: number = 10; let isStudent: boolean = true; ``` 在上面的例子中,我们声明了三个变量,并将它们的类型分别设置为字符串、数字和布尔值。 ## 接口 接口是 TypeScript 的一个重要特性,它用于定义对象的形状。例如,以下是一个 `Person` 接口: ```typescript interface Person { name: string; age: number; } let person: Person = { name: "TypeScript", age: 10 }; ``` 在上面的例子中,我们定义了一个 `Person` 接口,它有两个属性:`name` 和 `age`。我们还创建了一个 `person` 对象,并将它的类型设置为 `Person`。 ## 类 TypeScript 支持类,可以使用类来创建对象和继承。以下是一个 `Animal` 类的示例: ```typescript class Animal { name: string; constructor(name: string) { this.name = name; } move(distance: number = 0) { console.log(`${this.name} moved ${distance}m.`); } } class Dog extends Animal { constructor(name: string) { super(name); } bark() { console.log("Woof! Woof!"); } } let dog = new Dog("Fido"); dog.move(10); dog.bark(); ``` 在上面的例子中,我们定义了一个 `Animal` 类和一个 `Dog` 类,并使用 `extends` 关键字将 `Dog` 类继承自 `Animal` 类。我们还创建了一个 `dog` 对象,并调用了 `move()` 和 `bark()` 方法。 ## 模块 TypeScript 支持模块化,可以将代码分成多个模块,并使用 `import` 和 `export` 关键字来管理模块之间的依赖关系。以下是一个简单的模块示例: ```typescript // greeter.ts export function sayHello(name: string) { console.log(`Hello, ${name}!`); } // main.ts import { sayHello } from "./greeter"; sayHello("TypeScript"); ``` 在上面的例子中,我们将 `sayHello()` 函数定义在 `greeter.ts` 文件中,并使用 `export` 关键字将它导出。然后在 `main.ts` 文件中,我们使用 `import` 关键字将 `sayHello()` 函数导入,并调用它。 ## 总结 以上是 TypeScript入门教程,涵盖了 TypeScript 的主要特性,包括类型注解、接口、类和模块。这些特性可以帮助您编写更安全、更可维护的 JavaScript 代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值