Fukuoka.js #8「TypeScript」
5ZQF4DSJQUͰͭ͘Δ/PEFKTύοέʔδ'VLVPLBKTň5ZQF4DSJQUʼnגࣜձࣾσΟʔθϩ8FCΞΫηγϏϦςΟΤϯδχΞฏඌΏ͏ͯΜ
View Slide
©2019 Yusuke HiraoגࣜձࣾσΟʔθϩ8FCΞΫηγϏϦςΟΤϯδχΞฏඌΏ͏ͯΜ5ZQF4DSJQUͰͭ͘Δ/PEFKTύοέʔδ'VLVPLBKTň5ZQF4DSJQUʼn
©2019 Yusuke Hiraoࣗݾհฏඌ༏యʢͻΒ͓Ώ͏ͯΜʣגࣜձࣾσΟʔθϩ8FCΞΫηγϏϦςΟΤϯδχΞϑϩϯτΤϯυΤϯδχΞ#-0(IUUQTOPUFNVZVTVLFIJSBPYusuke Hirao@cloud10designs
©2019 Yusuke Hirao͜Μͳͷ࡞ͬͯ·͢KBDPKTຊޠ༻จࣈมϥΠϒϥϦNBSLVQMJOU)5.-ϦϯλʔόϦσʔλʔ
©2019 Yusuke Hiraoࠓͳ͢͜ͱ࠷ݶͷϛχϚϜͳtsconfig.jsonpackge.jsonઃఆʹ͍ͭͯ
©2019 Yusuke Hiraoࠓͳ͞ͳ͍͜ͱܕͷͳ͠NPOPSFQPʹ͍ͭͯ
©2019 Yusuke HiraoΞδΣϯμίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱઃఆϏϧυ͢ΔύϒϦογϡ͢Δ
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱ
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱϦϙδτϦͷσΟϨΫτϦߏ+BWB4DSJQUϑΝΠϧܕఆٛϑΝΠϧʢ*.d.tsʣͳͲͷॻ͖ग़͠ઌw OQNͰެ։͢ΔϑΝΠϧ܊ΛೖΕΔɻw HJUͰআ֎͢Δɻw ໊લlibͰdistͰԿͰ͓ΈͰɻϞδϡʔϧʹύεࢀরͰ͖Δύοέʔδʢ5SFF4IBLJOHͷͨΊͩͬͨΓʣʹ͍ͨ͠߹ɺσΟϨΫτϦ໊ͪΐͬͱॏཁɻʢྫKBDPKTʣimport toHiragana from "jaco/fn/toHiragana";toHiragana("ΧλΧφΛͻΒͳ͕ʹ");
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱϦϙδτϦͷσΟϨΫτϦߏ5ZQF4DSJQUϑΝΠϧͳͲιʔείʔυஔ͖w OQNͰެ։͠ͳ͍ʢ͍͍ͯ͠ʣɻw ໊͜͜લ͓ΈͰɻ
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱϦϙδτϦͷσΟϨΫτϦߏϑΥϧμผʑ͕Φεεϝw HJUOQNͷআ֎ઃఆָ͕ɻw ܕఆٛϑΝΠϧʢ*.d.ts.mapʣͷιʔεϚοϓΛར༻Ͱ͖Δɻ
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱॻ͖ग़͢+4ͷόʔδϣϯʢtargetʣes5 es2017 esnextϝϦοτͲΜͳڥͰಈ͘/PEFKTWҎ্ͳΒಈ͘import.metaରԠʢ&4.ʹඞਢʣσϝϦοτasync/awaitfor..ofͳͲ͕ϨΨγʔίʔυม͞ΕΔϒϥβͰ͏߹CBCFMͳͲ͕ඞཁʹͳΔී௨ʹ͏ͳΒCBCFMͳͲ͕ඞཁ
©2019 Yusuke HiraoίʔυΛॻ͘લʹܾΊ͓ͯ͘͜ͱॻ͖ग़͢+4ͷϞδϡʔϧγεςϜʢmoduleʣcommonjs esnext ͦͷଞϝϦοτݱࡏͷඪ४import.metaରԠʢ&4.ʹඞਢʣ͠ΒΜσϝϦοτ&4.Ͱ͑ͳ͍ී௨ʹ͏ͳΒCBCFMͳͲ͕ඞཁΘ͔ΒΜ
©2019 Yusuke Hiraoઃఆ
©2019 Yusuke Hiraoઃఆ$ yarn init{"name": "@yusukehirao/sample","version": "0.1.0-alpha.0","main": "lib/index.js","author": "Yusuke Hirao ","license": "MIT"}࣮ݧͷࡍ4DPQFEQBDLFHFʹ͠·͠ΐ͏ઌʹܾΊͨσΟϨΫτϦͷΤϯτϦʔϑΝΠϧimport sample from "@yusukehirao/sample";௨ৗͷimport࣌ͷࢀরઌʹͳΔpackage.json
©2019 Yusuke Hiraoઃఆ$ yarn add -D typescriptίϯύΠϥΛΠϯετʔϧ{"name": "@yusukehirao/sample","version": "0.1.0-alpha.0","main": "lib/index.js","author": "Yusuke Hirao ","license": "MIT","devDependencies": {"typescript": "^3.4.5"}}package.json
©2019 Yusuke Hiraoઃఆ$ ./node_modules/.bin/tsc —init{"compilerOptions": {"target": "es2017","module": "commonjs","declaration": true,"declarationMap": true,"sourceMap": true,"outDir": "./lib","rootDir": "./src","strict": true,"esModuleInterop": true}}tsconfig.jsonܾΊͨॻ͖ग़͠ઌͱιʔείʔυஔ͖ܾΊͨ&4όʔδϣϯϞδϡʔϧγεςϜ
©2019 Yusuke Hiraoઃఆ$ ./node_modules/.bin/tsc —init{"compilerOptions": {"target": "es2017","module": "commonjs","declaration": true,"declarationMap": true,"sourceMap": true,"outDir": "./lib","rootDir": "./src","strict": true,"esModuleInterop": true}}tsconfig.jsonܕఆٛϑΝΠϧͱιʔεϚοϓϑΝΠϧͷੜΛ༗ޮʹ͓ͯ͘͠
©2019 Yusuke HiraoઃఆίϯύΠϧίϚϯυΛొtsc ίϚϯυΛొ͓ͯ͘͠{"name": "@yusukehirao/sample","version": "0.1.0-alpha.0","main": "lib/index.js","author": "Yusuke Hirao ","license": "MIT","scripts": {"build": "tsc","prepack": "tsc"},"devDependencies": {"typescript": "^3.4.5"}}package.jsonw Φϓγϣϯtsconfig.jsonʹॻ͍͓͚ͯجຊ͍Βͳ͍ɻw prepackεΫϦϓτύοέʔδެ։࣌ͷϏϧυΕࢭɻ
©2019 Yusuke HiraoઃఆܕఆٛϑΝΠϧΛొΤϯτϦʔϑΝΠϧͷܕఆٛϑΝΠϧͷύε{"name": "@yusukehirao/sample","version": "0.1.0-alpha.0","main": "lib/index.js","types": "lib/index.d.ts","author": "Yusuke Hirao ","license": "MIT","scripts": {"build": "tsc","prepack": "tsc"},"devDependencies": {"typescript": "^3.4.5"}} package.jsonw ܕใΛఏڙͰ͖Δɻw Α͘ @types/xxxxxͰࢀর͢Δ%FpOJUFMZ5ZQFE%FpOJUFMZ5ZQFEʹ13ૹΔඞཁͳ͍ɻ
©2019 Yusuke HiraoϏϧυ͢Δ
©2019 Yusuke HiraoϏϧυ͢Δ$ yarn build
©2019 Yusuke HiraoύϒϦογϡ͢Δ
©2019 Yusuke HiraoύϒϦογϡ͢Δ$ touch .npmignoreύοέʔδʹؚ·ͳ͍ϑΝΠϧͷআ֎ઃఆΛ͢Δsrctsconfig.jsontsconfig.tsbuildinfo.npmignorew package.jsonͷfilesʹύοέʔδʹؚΊ͍ͨϑΝΠϧͷϗϫΠτϦετΛॻ͍ͯΑ͍ɻw .npmignore͔files͕ͳ͍ͱɺ.gitignoreΛআ֎ઃఆͱΈͳ͢ͷͰɺॻ͖ग़͠ઌͷσΟϨΫτϦ͕ύοέʔδʹೖΒͳ͍൵ࢂͳ͜ͱʹͳΔ
©2019 Yusuke HiraoύϒϦογϡ͢Δ$ npm publish
©2019 Yusuke HiraoύϒϦογϡ͢ΔܕఆٛϑΝΠϧެ։͍ͯ͠ΔͷͰɺ5ZQF4DSJQU͔ΒͪΖΜɺ+BWB4DSJQUͰܕΛࢀরͰ͖Δ
5ZQF4DSJQUͰར༻ͯ͠Β͑·͢Αʔʹ
גࣜձࣾσΟʔθϩ8FCΞΫηγϏϦςΟΤϯδχΞฏඌΏ͏ͯΜ5ZQF4DSJQUͰͭ͘Δ/PEFKTύοέʔδ'VLVPLBKTň5ZQF4DSJQUʼn