Today'sTypeScriptTypes for beginner
View Slide
Name@brn (ꫬꅿ⨳ⵃ)Occupationؿٗٝزؒٝسؒٝآص،٥ط؎ذ؍ـؒٝآص،CompanyCyberagent ،سذؙأةآؔ AI MessengerOSSContributor of V8Abouthttp://info.b6n.ch
➙傈ך鑧כ֮תTSח鍗גְזְ➂הַ➙䖓⢪ֲֶַה䙼גְ➂ぢֽדׅկ
僴➙ךTypeScript㘗ך乼⡲ְָםְדֹ״ֲחזת׃կEcmascriptך➬圫חꟼ׃גכ鋉䚍ָ֮תזֻⰅגְךד満殛babel⢪זֻגְְְֻחכ㹋鄲ׁג
TypeScriptך㘗javascriptח㢌䳔ׁךדծ㹋遤儗חכ䠐ָ㣟ֻ֮תד؝ٝػ؎ٕ儗ח撑ׁثؑحֽֽׁؙו갹䓸ג稢ַֻ剅ֽלծ؝ٝػ؎ٕ儗חٓٝة؎يؒٓ٦קר嗚叨דַֹ갹䓸ך
㘗?㢌侧ח㼎׃ג⦼ָ䭷㹀ׁⵖ秈弫׃גְַוֲַ嗚鏾ׅך
const value: string = 1;!
⽃秪ז㘗ءٝفٕחstringהַnumberהַ剅ֻװא֮הכ荈⡲ךؙٓأהַ
const value: string = 'string';!const value: number = 1;!
interface/classinterfaceהclass
interface X {!getName(): string;!getAge(): number;!}!!class XImpl implements X {!getName() {return 'Aono';}!getAge() {return 31;}!}!
Generics㘗⹛涸ח㢌ִװא
interface M {!getValue(): T;!}!!class MImpl implements M {!getValue(): string {!return 'foobarbaz'!}!}!
醱さر٦ة㘗ך琎꧊さ٥锷椚ㄤ㘗穠さׅװא
type A = {!a: number,!b: string!} & {!c: RegExp!};!
type B = {!a: number,!b: string!} | {!a: string,!b: number!};!
nullךثؑحؙstrictNullCheckהְֲؔفءّٝonחׅהnullableהnonnullableׯהثؑحؙׅ
let value: string | null = null;!
➙傈鑧׃ַװא➭חְְ⤑ⵃז㘗ך堣腉ָָ֮ծאתךד満殛ַָֿ鑧׃ַװא
㘗ג⦜㹑鎉涸ד֮䗳銲ָ֮גծהחַֻ剅ֻךָ⦜
const x: {a: string, b: number} = obj;!const y: {a: number, b: string} = obj;!!const x: {!a: MyClass>,!...!} = obj;!const y: {!a: MyClass>,!...!} = obj;!
Mapped Type㘗ךⱖ⫷⡲䧭ׅ
type Person = {!name: string;!age: number;!}!
type FetchedPerson = {![P in Person]: Promise!};!!type FetchedPerson = {!name: Promise;!age: Promise;!}!
type Promisify = {![P in T]: Promise!};!!type FetchedPerson = Promisify;!
Conditional Type㘗ד♲갪怴皾㶨ַָֽ״
Infer operator㘗㢌侧ךفٖ٦أمٕت٦ה׃ג堣腉ׅ״խ
ֿך2אָَغ؎דׅꟼ侧ך䨱⦼《䖤׃PromiseⰋ鿇䒷ָ׃ꂁך銲稆㘗《䖤׃
type MyReturnType = !T extends (...args: any) => infer X? X: T;!!interface X {!getName(): string!}!!type R = MyReturnType!ꟼ侧ך䨱⦼《䖤
type UnPromisifyField = {![P in keyof T]:!T[P] extends Promise? UnPromisify!: UnPromisify;!}!!type UnPromisify =!T extends Promise? UnPromisifyField!: UnPromisifyField;Promise䒷ָׅ
type X = {!y: {!value: Promise;!};!z: Promise!}!!type Y = UnPromisify;!
type ArrayElementType = T extendsArray!? R!: T extends ArrayLike!? R!: T extends NodeListOf ? R!: T extends NodeList ? Node[] : T;!ꂁך銲稆㘗《䖤
➭ח㘗ず㡦ך䊴ⴓծ֮㘗ַ暴㹀ךفٗػذ؍ֽ嶊׃暴㹀ךفٗػذ؍ֽ䫙ֹ⳿׃㘗⡲החַֻ㘗דⶴה⡦דדֹ鎉铂חזת׃կ
type X = {!a: string;!b: number;!c: string;!};!!type Y = Pick;!
劢勻?➙כTupleדbindװapplyך㘗邌ֲה׃גְדׅי
תהTypeScriptך㘗כַז厫鮾חזךדծ㘗ך鿇ⴓד♶弫ח䙼ֲֿהכְע幾גתׅ僽ꬊֶ鑐׃׀幠耮ָ֮הֲ׀ְׂת׃կ