typescript ...关键字
时间: 2024-02-10 15:56:12 浏览: 28
TypeScript 是一种由 Microsoft 推出的开源编程语言,它是 JavaScript 的超集,增加了静态类型、类、接口、命名空间、枚举和泛型等特性。TypeScript 的关键字包括:
1. `let` 和 `const`:用于声明变量和常量。
2. `number`、`string`、`boolean`、`null`、`undefined`、`void`、`any`:用于声明变量的类型。
3. `interface`:用于定义接口,描述对象的形状。
4. `class`、`constructor`、`super`:用于定义类及其构造函数和父类。
5. `extends`、`implements`:用于继承和实现接口。
6. `public`、`private`、`protected`:用于定义类的成员的可见性。
7. `static`:用于定义静态成员。
8. `abstract`:用于定义抽象类和抽象方法。
9. `enum`:用于定义枚举类型。
10. `namespace`:用于定义命名空间。
11. `type`:用于定义类型别名。
12. `as`、`is`、`typeof`:用于类型断言和类型判断。
13. `module`:用于定义模块。
相关问题
typescript .prototype
在TypeScript中,可以使用`.prototype`来定义对象的原型属性和方法。在JavaScript中,`.prototype`可以用于创建对象的原型链,使得对象可以共享相同的属性和方法。
通过使用`.prototype`,我们可以给对象添加自定义的属性和方法。当对象实例调用这些方法时,会首先在对象自身上查找该方法,如果找不到,则会继续在原型链上查找。
下面是一个示例代码:
```typescript
function Person() {}
Person.prototype.test = function () {
console.log(this.a);
}
let per1 = new Person();
per1.a = '456';
per1.test(); // 456
Person.prototype.test(); // undefined
per1.test = function () {
console.log('123');
}
per1.test(); // 123
// 错误示例,不能通过实例的原型调用方法
// per1.prototype.test(); // TypeError: Cannot read property 'test' of undefined
```
在这个示例中,我们创建了一个名为`Person`的构造函数,并通过`.prototype`给`Person`添加了一个`test`方法。然后,我们通过`new`关键字创建了一个`Person`的实例`per1`,并给`per1`添加了一个属性`a`。当我们调用`per1.test()`时,会先在`per1`对象本身查找`test`方法,然后再在`Person.prototype`上查找。因此,`per1.test()`的结果是`456`。而`Person.prototype.test()`的结果是`undefined`,因为该方法在调用时没有绑定到任何对象。
总结来说,`.prototype`可以用于在TypeScript中定义对象的原型属性和方法,实现属性和方法的共享和继承。
typescript namespace关键字
TypeScript中的namespace关键字用于定义命名空间,可以将相关的代码组织在同一个命名空间下,避免全局变量冲突和命名空间污染。使用方式如下:
```typescript
namespace MyNamespace {
// 命名空间内的代码
}
```
在命名空间内部,可以定义变量、函数、类等,这些都是命名空间内的私有成员,外部无法直接访问。如果需要在命名空间外部访问命名空间内的成员,可以使用export关键字。示例如下:
```typescript
namespace MyNamespace {
export const name = "MyNamespace";
export function sayHello() {
console.log(`Hello from ${name}`);
}
}
console.log(MyNamespace.name); // 输出"MyNamespace"
MyNamespace.sayHello(); // 输出"Hello from MyNamespace"
```
需要注意的是,命名空间可以嵌套定义,例如:
```typescript
namespace MyNamespace {
export namespace SubNamespace {
export const name = "SubNamespace";
}
}
console.log(MyNamespace.SubNamespace.name); // 输出"SubNamespace"
```