大きな工場でも「TypeScript」を使用しています。巻き上げない場合は、ねじ込む必要があります。

Q:優れたJavaScriptの欠点はありませんか?

持ってる!たとえば、es5のvar宣言変数スコープの問題、およびコードが実行されるまで構文が間違っているかどうか。

Q:JavaScriptは活況を呈していますか?

正しい!Esがいくつあるかがわかります。JavaScriptが徐々に良くなっていることは否定できません。基礎となる設計からであれ、アプリケーションレベルからであれ、ES6、7、8などの導入により、言語はより多くなり、毎回より重要です。最新で、より安全で、より便利ですが、JavaScriptはまだ型チェックにはほど遠いことがわかりますネチズンはそれが絵のようだと言います

ブログ投稿では、最もシンプルでわかりやすい用語を使って、定義された変数などの複雑なポイントを説明します。人々に理解してもらうために、好きなように変更できます。私はそれをaabbと呼びます。 xiaohongなど 。 

TypeScriptを知る 

官ر解释:TypeScriptはJavaScriptの型付きスーパーセットであり、プレーンJavaScriptにコンパイルされます。 

      TypeScriptは、JavaScript ES6、ES7、ES8、およびその他の新しい構文標準の拡張バージョンとして理解できます。これらはすべて
サポートされています。最初の割り当て変数でタイプが指定されていない場合、tsはコンパイル段階でエラーを報告するかどうかを確認します。 、多くのタイプを自動的に推測
します。多くの人がtsを使用してプロジェクトを完了できず、多くの人がtsを任意のタイプとして使用し始めたため、会社がtsを使用したくないというわけではありません
。統合タイプ配列内の配列は配列と呼ばれ、不均一型はタプルと呼ばれます。tsに触れたことがない場合は、理解していなくても、見下ろしていても、理解していなくても構いません。最後に、私を殴ってください!

TypeScriptの使用を開始するには、公式ドキュメントを5分間確認することをお勧めします・TypeScript中国語のWebサイト・TypeScript-JavaScriptのスーパーセット 

Tsをダウンロード 

  • TypeScriptは最終的にJavaScriptにコンパイルされて実行されるため、対応する環境を構築する必要があります。
# 安装命令
npm install typescript -g
# 查看版本
tsc --version

 TypeScriptを記述した後は、ブラウザーで直接実行できます。TypeScriptを記述した後は、ブラウザーで直接実行できるため、ts-nodeを使用する必要があります。

  • さらに、ts-nodeはtslibと@ types/nodeの2つのパッケージに依存する必要があります。
npm install ts-node -g
npm install tslib @types/node -g

これで、ts-nodeを介してTypeScriptコードを直接実行できます。

 ts-node xxx.ts

tsを使用する

JavaScriptタイプ

タイプ文字列を定義する

let message: string = 'Hello 活在风浪里。。'
  1.  違いは何ですか?tsの場合、型は厳密であり、型は変数宣言の前に指定されます。
  2. tsは、コンパイル段階でエラーを報告するかどうかを確認するプロンプトを表示します
  3. 型を指定せずに初めて変数を割り当てると、自動的に型推論が行われます。たとえば、10と書くと、それは型番号で、今は文字列です。これは、書いたものが文字列であるためです。
  4. 注:ここでの文字列は小文字であり、Stringとは異なり
    ます。StringはTypeScriptで定義された文字列型であり、StringはECMAScriptで定義されたクラスです。
  5. メッセージに文字列以外の値を割り当てると、エラーが報告されます

タイプ番号を定義する 

最初に、es6、es7をサポートすると言いました... ES6は2進数と8進数の表現を追加し、TypeScriptは2進数、8進数、16進数の表現もサポートしています。

let num1: number = 100 // 十进制
let num2: number = 0b100 // 二级制
let num3: number = 0o100 // 八进制
let num4: number = 0x100 // 十六进制
console.log(num1, num2, num3, num4) // 100 4 64 256

タイプ配列を定義する 

 最初に一般的に使用される

const uname: string[] = [] ;

 2番目のreactjsxに競合があります 

const uname: Array<string> = []

ブール型を定義する

let flag: boolean = true

 タイプシンボルを定義する

ES5では、次のように、オブジェクトに同じプロパティ名を追加できない場合 

const userinfo = {
  uname: 'holle',
  uname: 'holle' // 报错 不可以在对象里定义相同属性
}

 したがって、es6シンボルを使用できます 

const uname= Symbol('uname')
const uname= Symbol('uname')
const info = {
  [uname]: 'tom',
  [uname]: 'tom'// 两个tom是不一样的
}

      Es6は、jsの7番目の言語である一意の値を表す新しいプリミティブデータ型シンボルを参照します。シンボルの値は一意であり、変数の問題を解決するために使用されます。値は他のデータで操作できません。シンボルSは大文字にする必要があり、シンボル値を使用して値を直接渡すことは異なります。関数オブジェクトsymbol.forを使用して作成された番号は、同じステータスコードです。

2つの同じ値を直接渡し、シンボル番号を使用するのは異なります

let s1 = Symbol('Zhang San');

let s2 = Symbol('Zhang San');

console.log(s1 ==== s2); // falseは等しくありませんが、すべてZhang Sanにサービスを提供していますが、メモリ番号は異なります

 nullおよびundefinedタイプを定義します

const aa: null = null
const bb: undefined = undefined

TypeScripteタイプ(5タイプ)

タイプを定義する

  • 場合によっては、変数のタイプを実際に判別できないことがあり、変数が変更される可能性があります。現時点では、任意のタイプを使用できます。

// 在不想给某些 变量 添加具体的数据类型时可以用any

let message: any = 'Hello World'
message = 123
message = true
message = {}
console.log(message)

タイプ不明を定義

  • unknownはTypeScriptの特殊なタイプであり、不確実なタイプの変数を記述するために使用されます
function str() { 
  return 'abc'
}

function num() {
  return 123
}

// unknow 类型只能复制给 any 和 unknow 类型
// any 类型可以赋值给任意类型 !!

const flag = true
let result: unknown
if (flag) {
  result = str()
} else {
  result = num()
}

console.log(result)

タイプvoidを定義します

  • voidは通常、関数に戻り値がないことを指定するために使用され、その戻り値はvoidタイプです。
function sum(num1: number, num2: number): void {
  console.log(num1 + num2)//没有返回值,直接打印
}

sum(20, 30)

 タイプを定義しない

  •  関数が無限ループであるか例外をスローする場合、戻り値型としてvoid型または他の型を記述することは適切ではなく、never型を使用できます。値が発生しないタイプを表すことはありません
function bar(): never {
  throw new Error()
}

  タイプタプルを定義する

  • 通常、同じタイプの要素を配列に格納することをお勧めします。異なるタイプの要素を配列に配置することはお勧めしません。(オブジェクトまたはタプルに配置できます)対応する値は、インデックスに従って取得できます。 
const info: [string, number, number] = ['why', 18, 1.88]

const name = info[0]
const age= info[1]

 データの種類

 オブジェクトタイプとインターフェイスは、オブジェクトの形状を指定できます

//对象类型

function obj (num: { x: number; y: number }) {
  console.log(num.x)
  console.log(num.y)
}

// num('123') //报错
// num({ x: '123', y: '123' }) // 报错

obj({ x: 123, y: 321 })//类型传入正确

インターフェース 

interface InfoType {
  name: string
  age: number
}
const obj: InfoType = {
  name: 'tom',
  age: 18
}

 オプションタイプ 

//对象类型

function obj (num: { x: number; y?: number }) {// y 非必传
  console.log(num.x)
  console.log(num.y)
}


obj({ x: 123, y: 321 })//类型传入正确

obj({ x: 354})// 正确

共用体タイプ 


function obj ( v : number | string) {

  if (typeof v === 'string') {

     console.log(v) // abc

  } else {

    console.log(v) // 123

  }
}

obj(123)
obj('abc')// 传这两种类型都可以,联合类型就是将多种类型用 管道符 串联

タイプアサーション

  • 冒頭で述べたように、タイプがデフォルトで指定されていない場合、タイプは自動的にアサートされます

 

更新しています。

2022/3/2

おすすめ

転載: blog.csdn.net/m0_57904695/article/details/123139166