シナリオの理解(2)


索引演算子
配列内の項目を取得する場合は、インデックス演算子を使用します.
const numbers :number[] =[1, 2, 3, 4, 5]
for(let index = 0; index < numbers.length; index++){
    const item:number = numbers[index]
    console.log(item)
}
配列の非構造化割り当て
オブジェクトとは異なり、配列内の非構造化割り当て文には[]記号が使用されます.
const array:number[] =[1, 2, 3, 4, 5]

let [first, second, third, ...rest]= array
console.log(first, second, third, ...rest)
for ...文.
for ...in文はオブジェクトをターゲットとして使用します.
for in文は配列のインデックス値を遍歴します.
for(변수 in 객체){
	...
}
ex
let names = ["Jack", "doyoon", "junsung"]

for (const index in names){
    const name = names[index]
    console.log(`${index}: ${name}`)
}
for ...ドアの
for ...in文は配列内のインデックス値を巡回しますが、for...of文は、アレイ内のアイテム値を巡回します.次のコードはfor...の構文例です.プロジェクト値のみが必要な場合はfor...inに比べて、その実施はより簡潔である.
for(let 변수 of 객체){
	...
}
ex
for (const name of ["Jack", "doyoon", "junsung"]){
    console.log(name)
}
ジェニーンリックタイプ
配列の関数を作成する場合、number[]などの固定型の関数を作成するよりも、配列内の項目タイプを一度にT[]として表す方が便利です.タイプはTなどの変数として扱われ、JENNERICタイプと呼ばれます.
const arrayLength = (array: T[]):number => array.length
これによりコンパイラはTの意味を知ることができる.
(Tが型変数であることを示す)
arrayLength.ts
export const arrayLength = <T>(array:T[]): number => array.length
export const isEmpt = <T>(array:T[]):boolean => arrayLength<T>(array) == 0
arrayLength-test.ts
import { arrayLength, isEmpt } from "./05/arrayLength";
let numArray:number[] = [1, 2, 3]
let strArray: string[] = ["Hello", "World"]

type IPerson = {name: string, age?: number}
let personArray: IPerson[] = [{name:"doyoon"},{name:"Junsung", age:23}, {name:"seokwon", age:23}]

console.log(
    arrayLength(numArray),
    arrayLength(strArray),
    arrayLength(personArray),
    isEmpt([]),
    isEmpt([1])
)
ジェニーリック関数のタイプ推論
原則として、バイナリ形式で表される関数は、タイプ変数を次の形式で表さなければなりません.
함수이름<타입변수>(매개변수)
ex
const identity = <T>(n: T): T => n
console.log(
    identity<boolean>(true),
    identity(true)
)
展開演算子
...展開演算子と呼ばれ、アレイにも適用されます.
let array1: number[] = [1]
let array2: number[] = [1, 2]
let mergedArrat:number[] = [...array1, ...array2, 5]

console.log(mergedArrat)