タイプスクリプトの使用


1.タイプ別


1) string, number, boolean

const name: string = "sj"
const age: number = 26
const hasGirlFriend: boolean = false

2) array


①資料の種類が同じ場合

const nickname: string[] = ["a","b","c","d"]
const age: number[] = [1,2,3,4]

②資料型が多い場合

const nickname: (string|number)[] = ["a",1,"b",2]
const age: (number|boolean)[] = [1,true,2,false]

3) object

const myInfo: {
 name: string
 age: number
 hasGirlFriend: boolean
}= {
	name: "sj",
  	age: 26,
  	hasGirlFriend: false
}

4) function

function getMyNickname(name: string):string{
  	const nickname = `cool ${name}`
 	return nickname 
}

const getMyNickname = (name?: string):string => {
  	const nickname = `cool ${name}`
 	return nickname 
}
  • を返さない関数の場合、voidタイプが与えられます.
  • オプションパラメータは?Unionを追加し、undefinedを追加します.
  • 5) Union

    const age: string|number = 26 // or "26"
  • 1変数には、複数のタイプの
  • があり得る

    6)小整理


  • しかし、実際には、Unionタイプまたは関数のパラメータでなければ、変数に直接タイプを指定する必要はありません.
  • タイプスクリプトは、変数のタイプとして初期割当値のタイプを自動的に指定します.不確実であれば、その変数にフーバーをつけると、彼がどんなタイプなのかがわかります.
  • 2.タイプ変数(type alias)

  • で述べたように、使用するタイプは変数化されています.
  • type AgeType = string | number
    const age: AgeType = 26 // or "26"
  • 他の資料型も同様であり、タイプ変数をUnionとして使用することもできる.
  • ですが、オブジェクトと関数には注意が必要です.
  • 1)宣言関数はタイプ変数を許可しない

  • セグメント関数では、宣言関数ではタイプ変数は使用できません.矢印関数または関数式を使用する必要があります.
  • type GetMyNickNameType = (name:string|number) => string;
    
    function getMyNickname(name){
      	const nickname = `cool ${name}`
     	return nickname 
    }
    // 선언 함수에서는 타입변수 사용불가하더라
    
    const getMyNickname:GetMyNickNameType = function(name){
      	const nickname = `cool ${name}`
     	return nickname 
    }
    const getMyNickname:GetMyNickNameType = (name) => {
      	const nickname = `cool ${name}`
     	return nickname 
    }

    2)対象


    ① [key: string]

  • どれだけの属性が入ってくるか分からない場合は、[key:string]によって無限大の鍵を得ることができる.
  • type MemberType = {
    	[key: string]: string
    }
    
    const member :MemberType = {
    	lastName: "choi",
      	FirstName: "sj",
      	hobby: "walk",
      	job: "student"
      	~~~ // value가 string이기만 하면 된다.
    }

    ②オブジェクトはタイプではなくインタフェースが好き

    interface IStudent{
      	name: string
    }
    interface ITeacher extends IStudent{
     	subject: string 
    }
    
    const student: IStudent = {name: "choi"}
    const teacher: ITeacher = {name: "park", subject: "korean"}
  • オブジェクトの場合、使用するインタフェースはタイプより多い.
  • インタフェースはextendsを使用して拡張できます!
  • extendsは&extendsの用途と似ているように見えますが、&extendsの意味に比べて、extendsは既存のインタフェースをコピーし、追加の属性を追加します.
  • interface IStudent{
      	name: string
    }
    interface IStudent{
     	age: number 
    }
    
    IStudent // === {name:string, age:number} 
  • インタフェースは、タイプ変数名を繰り返し宣言することができ、したがって、繰り返し値間のタイプが結合される.
  • ただしtypeはタイプ変数名を繰り返すことはできません.
  • ③readonly(推奨文字)

    type FriendsName = {
    	readonly name: string
    }
    const friends :FriendsName = {
    	name: "park"
    }
  • 最初に与えられた値はreadonlyになります.
  • javascriptの場合、const変数にオブジェクトを割り当てると、オブジェクトのプロパティ値を変更できます.
  • タイプのスクリプトは、readonlyを介して初期割り当て値とは異なる値を入力しようとするとエラーが発生します.
  • でもこう書くなら文学の類型でタイプに直接「パーク」を入れておけばいいのでしょうか?