提交 4e466a19 编写于 作者: W wizardforcel

2020-06-06 15:55:09

上级 c2d57ca9
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/typescript/typescript-types/](https://howtodoinjava.com/typescript/typescript-types/)
TypeScript 支持对基本类型(原始类型和对象类型)进行类型检查。 它还支持泛型,装饰器和 ES6 模块类型。 重要的是要知道 TypeScript 中的类型系统设计为 ***可选*** 。 因此,所有 javascript 程序也都是 TypeScript 程序。
TypeScript 支持对基本类型(原始类型和对象类型)进行类型检查。 它还支持泛型,装饰器和 ES6 模块类型。 重要的是要知道 TypeScript 中的类型系统设计为***可选***。 因此,所有 javascript 程序也都是 TypeScript 程序。
```java
Table of Contents
......@@ -16,7 +16,7 @@ Decorators
## 1)静态类型
在语言语义和类型系统的上下文中,**静态类型通常表示“在编译时”** 或“不运行程序”,而**动态表示“在运行时”** 。 在静态类型语言中,变量,参数和对象成员具有编译器在编译时就知道的类型。 编译器可以使用该信息执行类型检查并优化编译的代码。
在语言语义和类型系统的上下文中,**静态类型通常表示“在编译时”**或“不运行程序”,而**动态表示“在运行时”**。 在静态类型语言中,变量,参数和对象成员具有编译器在编译时就知道的类型。 编译器可以使用该信息执行类型检查并优化编译的代码。
TypeScript 中的静态类型可以分为两个子类型:
......@@ -24,8 +24,9 @@ TypeScript 中的静态类型可以分为两个子类型:
TypeScript 具有 5 种主要基本类型,即`number``string``boolean``void``any`
| 原始类型 | 描述 |
| `number` | Use to define variable of type `number`.
`number`
用于定义类型为`number`的变量。
```java
let num: number = 123;
......@@ -34,8 +35,9 @@ TypeScript 具有 5 种主要基本类型,即`number`,`string`,`boolean`
```
|
| `string` | Use to define variable of type `string`.
`string`
用于定义`string`类型的变量。
```java
let str: string = 'hello';
......@@ -44,8 +46,9 @@ TypeScript 具有 5 种主要基本类型,即`number`,`string`,`boolean`
```
|
| `boolean` | Use to define variable of type `boolean`.
`boolean`
用于定义`boolean`类型的变量。
```java
let bool: boolean = false;
......@@ -54,8 +57,7 @@ TypeScript 具有 5 种主要基本类型,即`number`,`string`,`boolean`
```
|
| `void` |
`void`
1. 用于函数返回类型以表示非返回函数。
......@@ -76,8 +78,9 @@ TypeScript 具有 5 种主要基本类型,即`number`,`string`,`boolean`
```
|
| `any` | Use `any` when you want to opt-out of type-checking and let the values pass through compile-time checks.
`any`
当您想退出类型检查并让值通过编译时检查时,请使用`any`
```java
let val: any = 'hello';
......@@ -94,8 +97,9 @@ TypeScript 具有 5 种主要基本类型,即`number`,`string`,`boolean`
TypeScript 支持以下对象类型。
| 对象类型 | Description |
| 数组 | An array is a collection of values of the **same datatype**.
数组
数组是**相同数据类型**的值的集合。
```java
var names:string[]; //declaration
......@@ -104,8 +108,9 @@ TypeScript 支持以下对象类型。
```
|
| up | Touple is just like array; but store values of **different datatypes**. It is also index based data structure just like array.
元组
元组就像数组; 但存储“不同数据类型”的值。 就像数组一样,它也是基于索引的数据结构。
```java
var items; //declaration
......@@ -114,8 +119,9 @@ TypeScript 支持以下对象类型。
```
|
| 接口 | Interfaces define properties, methods, and events which deriving member classes must implement.
接口
接口定义派生成员类必须实现的属性,方法和事件。
```java
interface ICalc {
......@@ -130,8 +136,9 @@ TypeScript 支持以下对象类型。
```
|
| 类 | A class is a template for creating objects. Typescript gets support for classes from ES6.
类是用于创建对象的模板。 Typescript 从 ES6 获得对类的支持。
```java
class Person {
......@@ -152,8 +159,9 @@ TypeScript 支持以下对象类型。
```
|
| 枚举 | Like other programming languages, an Enum is a datatype consisting of a set of named values. The names are usually identifiers that behave as constants. Enums were introduced in ES6.
枚举
与其他编程语言一样,枚举是由一组命名值组成的数据类型。 名称通常是充当常量的标识符。 ES6 中引入了枚举。
```java
enum Direction {
......@@ -168,8 +176,9 @@ TypeScript 支持以下对象类型。
```
|
| 功能 | In TypeScript, we can declare variables who will point to only functions in their lifetime.
函数
在 TypeScript 中,我们可以声明仅在函数生命期内指向函数的变量。
```java
let fun: Function = () => console.log("Hello");
......@@ -178,11 +187,10 @@ TypeScript 支持以下对象类型。
```
|
## 2)泛型
泛型允许创建一个可以在多种类型而不是单个类型上工作的组件。 例如
泛型允许创建一个可以在多种类型而不是单个类型上工作的组件。 例如
```java
function throwBack<T>(arg: T): T { //Function return the parameter as it is
......@@ -220,6 +228,6 @@ console.log(admin.print()); // Lokesh Gupta
```
TypeScript 中的**类型系统就这些了。 将我的问题放在评论部分。**
TypeScript 中的**类型系统就这些了**。 将我的问题放在评论部分。
学习愉快!
\ No newline at end of file
# 字符串文字类型
# 字符串字面值类型
> 原文: [https://howtodoinjava.com/typescript/string-literal-types/](https://howtodoinjava.com/typescript/string-literal-types/)
在 TypeScript 中,字符串文字可让您指定`string`在其生命周期中必须具有的确切值。 您可以将其假定为“基于字符串的枚举”的形式,也称为`string`常量组。
在 TypeScript 中,字符串字面值可让您指定`string`在其生命周期中必须具有的确切值。 您可以将其假定为“基于字符串的枚举”的形式,也称为`string`常量组。
## 句法
......@@ -17,13 +17,13 @@ type AppStatus = "ACTIVE" | "INACTIVE" | "ONHOLD";
```
## 字符串文字类型示例
## 字符串字面值类型示例
让我们看看如何使用`string`文字,以及如何无法使用。
让我们看看如何使用`string`字面值,以及如何无法使用。
1. #### 变量分配
您只能将允许的值分配给文字类型变量。 否则将是**编译时错误**。
您只能将允许的值分配给字面值类型变量。 否则将是**编译时错误**。
```java
type AppStatus = "ACTIVE" | "INACTIVE" | "ONHOLD";
......@@ -39,7 +39,7 @@ type AppStatus = "ACTIVE" | "INACTIVE" | "ONHOLD";
2. #### 功能参数
您只能将允许的值传递给文字类型参数。 否则将是**编译时错误**。
您只能将允许的值传递给字面值类型参数。 否则将是**编译时错误**。
```java
type AppStatus = "ACTIVE" | "INACTIVE" | "ONHOLD";
......
# TypeScript 变量– var,let 和 const
# TypeScript 变量 – `var`,`let`和`const`
> 原文: [https://howtodoinjava.com/typescript/var-let-const/](https://howtodoinjava.com/typescript/var-let-const/)
在原始 JavaScript 中,变量是使用“ `var`”关键字声明的。 现在,在 ES6 中,您还可以使用`let``const`关键字定义变量。 这三个关键字都具有用于变量声明和初始化的标准语法,但是它们的范围和用法不同。 让我们了解这三个关键字之间的区别。
在原始 JavaScript 中,变量是使用“`var`”关键字声明的。 现在,在 ES6 中,您还可以使用`let``const`关键字定义变量。 这三个关键字都具有用于变量声明和初始化的标准语法,但是它们的范围和用法不同。 让我们了解这三个关键字之间的区别。
## 关键字
## `var`关键字
关键字`var`具有传统的变量定义语法。 (可选)您可以使用值初始化变量。 如果您没有在`var`语句中初始化变量,则会自动为其分配 JavaScript 值`undefined`
......@@ -58,13 +58,13 @@ var blogName = 'howtodoinjava.com'; //initialized with string value
```
#### 2)吊装 var 声明
#### 2)`var`声明的提升
请注意,用`var`关键字声明的变量将被吊起。 提升意味着,如果我们在函数末尾声明一个变量(已声明但未初始化),则运行时会将其提升到顶部,并且如果在声明之前使用该变量,则不会有任何错误。
请注意,用`var`关键字声明的变量将被提升。 提升意味着,如果我们在函数末尾声明一个变量(已声明但未初始化),则运行时会将其提升到顶部,并且如果在声明之前使用该变量,则不会有任何错误。
> 阅读更多: [JavaScript 吊装](https://howtodoinjava.com/typescript/javascript-variable-hoisting/)
> 阅读更多: [JavaScript 提升](https://howtodoinjava.com/typescript/javascript-variable-hoisting/)
#### 3)如果您不使用“ var”关键字
#### 3)如果您不使用“`var`”关键字
在 JavaScript 中,如果不使用`var`关键字进行变量声明(*隐式声明*),则会在全局范围内创建变量。 例如
......@@ -75,15 +75,15 @@ for(index=0; index< array.length; index++){ //index is in global scope
```
for 循环上方,将在全局范围内创建一个名为`index`的变量。 如果其他人碰巧也在使用全局`index`变量,那么您刚刚覆盖了他们的变量。
`for`循环上方,将在全局范围内创建一个名为`index`的变量。 如果其他人碰巧也在使用全局`index`变量,那么您刚刚覆盖了他们的变量。
为避免赋予变量全局范围,必须在变量声明中使用`var`关键字。
## 让关键字
`let`关键字与`var`关键字非常相似范围界定上有更多限制。
`let`关键字与`var`关键字非常相似范围界定上有更多限制。
1. Use the `let` statement to declare a variable, when **scope MUST BE restricted to the block in which it is declared**.
1. 当“作用域必须限制在声明它的块中”时,使用“`let`”语句声明一个变量。
```java
function fun()
......@@ -106,9 +106,9 @@ for(index=0; index< array.length; index++){ //index is in global scope
```
参见上面突出显示的行。 如果您使用了“ `var`”关键字,则由于`dataY`在函数中具有全局作用域,因此该名称已经可用。 由于`let`关键字,`dataY`在`if`块之外不可见。
参见上面突出显示的行。 如果您使用了“`var`”关键字,则由于`dataY`在函数中具有全局作用域,因此该名称已经可用。 由于`let`关键字,`dataY`在`if`块之外不可见。
2. 使用 let 声明的变量不能在声明之前使用,否则将导致错误。
2. 使用`let`声明的变量不能在声明之前使用,否则将导致错误。
```java
function fun()
......@@ -123,11 +123,11 @@ for(index=0; index< array.length; index++){ //index is in global scope
```
## const 关键字
## `const`关键字
1. `const`声明一个具有常量值的块范围变量。 它基本上是带有“ `var`”关键字的变量声明,其中变量值是常量,不能更改。
1. `const`声明一个具有常量值的块范围变量。 它基本上是带有“`var`”关键字的变量声明,其中变量值是常量,不能更改。
2. `const`遵循与`let`关键字相同的作用域原则。
3. 如果您知道所声明的变量不能且不应被允许重新分配,则使用 const 对其进行声明,否则请使用 let 关键字。
3. 如果您知道所声明的变量不能且不应被允许重新分配,则使用`const`对其进行声明,否则请使用`let`关键字。
#### 语法和用法
......
......@@ -2,13 +2,13 @@
> 原文: [https://howtodoinjava.com/typescript/template-strings/](https://howtodoinjava.com/typescript/template-strings/)
模板字符串是常规 JavaScript 字符串,其中包含反引号字符(```java),这些字符带有以`${ }`表示的占位符。 在运行时,您的代码将占位符替换为实际值。
模板字符串是常规 JavaScript 字符串,其中包含反引号字符(` ``` `java),这些字符带有以`${ }`表示的占位符。 在运行时,您的代码将占位符替换为实际值。
## 模板字符串示例
我们来看一个非常基本的模板字符串示例。 在此示例中,在运行时,代码将占位符替换为变量的实际值。 称为**变量替换**。
```
```java
const name: String = 'Lokesh';
const age: number = 35;
......@@ -16,13 +16,13 @@ let message: string = `My name is ${ name } and my age is ${ age }`;
console.log(message); //My name is Lokesh and my age is 35
```java
```
## 模板字符串可以是多行
与使用加号(`+`)来连接多行字符串的常规字符串不同,**模板字符串不需要加号**。
```
```java
const name: String = 'Lokesh';
const age: number = 35;
......@@ -42,7 +42,7 @@ my age is
```
请注意,多行模板字符串输出以新行字符格式化的**字符串。**
请注意,多行模板字符串输出以新行字符格式化的**字符串**
将我的问题放在评论部分。
......
# JavaScript 变量吊装
# JavaScript 变量提升
> 原文: [https://howtodoinjava.com/typescript/javascript-variable-hoisting/](https://howtodoinjava.com/typescript/javascript-variable-hoisting/)
......@@ -6,11 +6,11 @@ JavaScript 中的变量提升意味着**将所有变量声明移到函数**的
> 请注意,用`var`关键字声明的变量将被吊起。 `let`和`const`(在 ES6 中引入)没有提升效果。
## 什么是吊装
## 什么是提升
如前所述,提升意味着将变量声明移到顶部。 重要的是要注意,如果初始化变量,则不会发生**提升。**
#### 变量声明(发生吊装
#### 变量声明(发生提升
在下面的代码中,在声明之前使用`data`
......@@ -40,9 +40,9 @@ fun();
```
#### 变量初始化(不会发生吊装
#### 变量初始化(不会发生提升
在下面的代码中,`data`也进行了声明和初始化。 在这种情况下,将发生吊装并且不会向上移动。 因此,`data`的值只有在声明和初始化后才可用。 没过
在下面的代码中,`data`也进行了声明和初始化。 在这种情况下,将发生提升并且不会向上移动。 因此,`data`的值只有在声明和初始化后才可用。 没过
```java
function fun()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册