* Fix prettier command to not expand in shell The previous prettier command was expanded by the shell used which might differ from how it will be expanded by prettier. Which effectively means it won't go through all subdirectories. * Make the changes in the translated README files
47 KiB
Definitely Typed
é«å質㪠TypeScript ã®åå®çŸ©çšã¬ããžããª
ãã® README ã¯è±èªã»ã¹ãã€ã³èªã»éåœèªã»ãã·ã¢èªã»äžåœèªã»ãã«ãã¬ã«èªã»ã€ã¿ãªã¢èªã§ãé²èЧã§ããŸãïŒ
管çè çšããã¥ã¢ã« ã¯ãã¡ã
çŸåšã®ã¹ããŒã¿ã¹
ãã®ã»ã¯ã·ã§ã³ã§ã¯ã¬ããžããªãšå ¬éããã»ã¹ã®çšŒåç¶æ³ã远跡ã§ããŸãã PR ãããã±ãŒãžã«äœãäžå ·åãããå Žåã¯ããããã圹ã«ç«ã€ãããããŸããã
- çŽè¿ã®ãã«ãã®åãã§ãã¯ãš Lint ãæ£åžžçµäºããã:
- 次ããŒãžã§ã³ã® TypeScript äžã§å
šããã±ãŒãžã®åãã§ãã¯ãš Lint ãæ£åžžçµäºããã:
- 1æé以å
ã«å
šããã±ãŒãžã npm ã«å
¬éãããŠããã:
- Definitely Typed äžã§ typescript-bot ãã¢ã¯ãã£ããã©ãã:
- çŸåšã®éçšåºç€ã®ã¹ããŒã¿ã¹æŽæ°
æ²èŒãããŠãããã®ã§äœããæ£åžžã§ã¯ãªãã£ãããçµæã倱æã«ãªã£ãŠãããã®ãããå Žåã¯ã TypeScript ã³ãã¥ããã£ã® Discord ãµãŒããŒã® Definitely Typed ã®ãã£ã³ãã«ãŸã§ãé£çµ¡ãã ããã
åå®çŸ©ãã¡ã€ã«ãšã¯äœã§ããïŒ ãŸãã©ã®ããã«å ¥æã§ããŸããïŒ
TypeScript ãã³ãããã¯ïŒè±èªïŒãåç §ããŠãã ããã
npm
ãã¡ããæšå¥šãããæ¹åŒã§ãã äŸ:
npm install --save-dev @types/node
äžèšã®ã³ãã³ãã®åŸãåã¯ã³ã³ãã€ã©ã«ããèªåçã«èªèãããããã«ãªããŸãã
ã¢ãžã¥ãŒã«ã䜿çšããªãå Žåã¯ãäžèšã®ããã« types ãªãã¡ã¬ã³ã¹ã远å ããå¿
èŠããããŸãã
/// <reference types="node" />
詳ããã¯ãã³ãããã¯ãåç §ããŠãã ããã
ãfooããšããååã® npm ã¢ãžã¥ãŒã«çšã®åå®çŸ©ã¯ã@types/fooãã«ãªããŸãã ããã±ãŒãžãèŠã€ãããªãå Žå㯠TypeSearch ã§æ€çŽ¢ããŠãã ããã
æ€çŽ¢ããŠãèŠã€ãããªãå Žåã¯ãããã±ãŒãžå
ã«åå®çŸ©ãå«ãŸããŠãããã©ãã確èªããŠãã ããã
倧æµã¯ package.json ã® "types" ãã£ãŒã«ãã "typings" ãã£ãŒã«ãã«æå®ãããŠããŸãã
ãããã¯ãããã±ãŒãžå
ã®å ".d.ts" ãã¡ã€ã«ã確èªãã /// <reference path="" /> ã䜿ã£ãŠæåã§ã€ã³ã¯ã«ãŒãããŠãã ããã
å€ãããŒãžã§ã³ã® TypeScript ïŒ4.0 以åïŒ
Definitely Typed ã§ã¯ããªãªãŒã¹ãã2幎以å
ã®ããŒãžã§ã³ã® TypeScript äžã§ã®ã¿ããã±ãŒãžã®ãã¹ãã宿œããŠããŸãã
çŸæç¹ã§ã¯ããŒãžã§ã³ 4.1 以äžã§ãã¹ããããŠããŸãã
TypeScript 2.0 ïœ 4.0 ã䜿çšããŠããå ŽåãåŒãç¶ã @types ããã±ãŒãžãã€ã³ã¹ããŒã«ããããšã¯å¯èœã§ã â ãã㯠TypeScript ã®ææ°æ©èœã䜿çšããŠããããã±ãŒãžããããªã«å€ããªãããã§ãã
ãã ããæ£åžžã«åäœããä¿èšŒããããŸããã
ãµããŒãæéã«ã€ããŠã¯äžèšã®ãšããã§ãã
@types ããã±ãŒãžã«ã¯ããµããŒããã TypeScript ã®ããŒãžã§ã³ãæç€ºçã«æå®ããã¿ã°ããããããå€ãã®å Žåã¯ãµããŒãæéå€ã®ããŒãžã§ã³çšã®ããã±ãŒãžã§ãå
¥æã§ããŸãã
ããšãã°ã npm dist-tags @types/react ãå®è¡ãããšã TypeScript 2.5 ãªã react@16.0 ã®ã TypeScript 2.6 ã 2.7 ãªã react@16.4 ã®åå®çŸ©ãããããå©çšã§ããããšã確èªã§ããŸãã
| ã¿ã° | ããŒãžã§ã³ |
|---|---|
| latest | 16.9.23 |
| ts2.0 | 15.0.1 |
| ... | ... |
| ts2.5 | 16.0.36 |
| ts2.6 | 16.4.7 |
| ts2.7 | 16.4.7 |
| ... | ... |
TypeScript 1.xç³»
- ãã®ã¬ããžããªã®
masterãã©ã³ãããæåã§ããŠã³ããŒãããŠãéçºããŠãããããžã§ã¯ãã«é 眮ããŠãã ããã TypingsïŒTypings ã¯éæšå¥šã«ãªã£ãã®ã§ãä»ã®æ¹åŒã䜿çšããããšïŒNuGetïŒNuGet äžã® DefinitelyTyped ã®å ¬éã¯çµäºããã®ã§ãä»ã®æ¹åŒã䜿çšããããšïŒ
æåã§ãªãã¡ã¬ã³ã¹ã远å ããå¿ èŠããããŸãã
ã³ã³ããªãã¥ãŒãïŒè²¢ç®ïŒããæ¹æ³
Definitely Typed ã¯ãããªãã®ãããªãŠãŒã¶ãŒã«ããã³ã³ããªãã¥ãŒãïŒè²¢ç®ïŒã®ãããã§æãç«ã£ãŠããŸãïŒ
詊ããŠã¿ã
æ¹è¯ãããã®ãäžçäžã«å ±æããåã«ããŸãèªåèªèº«ã§äœ¿ã£ãŠã¿ãŠãã ããã
ïŒè𳿳š: åæã«ãããæ¬ã»ã¯ã·ã§ã³ã§ã® "test"ã»"testing" ã¯ããã¹ãã®å®è¡ã§èšåããããã㪠dtslint ã«ããèªåãã¹ãã§ã¯ãªããåã«æåºããããšããŠãã倿Žãå®éã®ã¢ããªã§è©ŠãããšãæããŸããïŒ
æ¢åã®ããã±ãŒãžãžã®å€æŽç¹ã詊ã
ïŒè𳿳š: 倿Žããåå®çŸ©ã詊ãããã®ïŒããªãã®ã¢ããªã§ããŒã«ã«ç°å¢ã§ãã¹ãããå Žåãã¢ãžã¥ãŒã«æ¡åŒµïŒmodule augmentationïŒã䜿ããšãç·šéããã DefinitelyTyped ã¢ãžã¥ãŒã«ããã®åå®çŸ©ãæ¡åŒµã§ããŸãã
ãŸãã node_modules/@types/foo/index.d.ts ã«ããåå®çŸ©ãçŽæ¥ç·šéããŠãã倿Žç¹ãæ€èšŒã§ããŸãããã®ããšã«ãäžèšæé ã«æ²¿ã£ãŠå€æŽããã®ã¬ããžããªã«åæ ãããŠãã ããã
æ°ããããã±ãŒãžã詊ã
次ã®ã³ãŒãããïŒè𳿳š: æ°ããåå®çŸ©ã詊ãããã®ïŒããªãã®ã¢ããªã® tsconfig.json ã«è¿œå ããŠãã ãã:
"baseUrl": "types",
"typeRoots": ["types"],
次ã«ã types/foo/index.d.ts ãäœæãããfooãã¢ãžã¥ãŒã«ã®åå®çŸ©ãå«ããŠãã ããã
ããã§ãããªãã®ã³ãŒãäžã§ "foo" ã¢ãžã¥ãŒã«ããã€ã³ããŒãã§ããããã«ãªããŸãããã€ã³ããŒãã¯æ°ããåå®çŸ©ãåç
§ããŸãã
ãã®ããšãã³ãŒãããã«ããããããŠå®è¡ããäœæããåå®çŸ©ãå®è¡æã®åäœãšå®éã«äžèŽããŠããããšã確èªããŠãã ããã
å®éã®ã³ãŒãã§è©Šãããã PR ãäœæããã®ã§ãæ¢åã®ããã±ãŒãžãç·šéãããæ°ããããã±ãŒãžãäœæããããããããã®æç€ºã«åŸã£ãŠãã ããã
PR ãäœæãã
倿Žã»æ°èŠäœæããããã±ãŒãžã詊ãçµãããã Definitely Typed ã§å ±æããŸãããã
ãŸãããã®ã¬ããžããªããã©ãŒã¯ãã node ãã€ã³ã¹ããŒã«ãã npm install ãå®è¡ããŸãã
DefinitelyTyped ãžã®å€§éã® PR ãå šãŠã»ã«ããµãŒãã¹æ¹åŒã§åŠçããããã« bot ãå°å ¥ããŠããŸãã詳ããæ¹æ³ãšçç±ã«ã€ããŠã¯ãã¡ãïŒè±èªïŒã§ç¢ºèªã§ããŸããäžå³ã¯ DefinitelyTyped ãžã® PR ã®ã©ã€ããµã€ã¯ã«ãç°¡åã«ç€ºãããã®ã§ãã
æ¢åã®ããã±ãŒãžãç·šéãã
cd types/<ç·šéãããããã±ãŒãžå>ãå®è¡ã- 倿Žãå ããããã¹ããç·šéããã®ãå¿ããã«è¡ãã ç Žå£çãªå€æŽãå ãããšãã¯ãå¿ ãã¡ãžã£ãŒããŒãžã§ã³ãæŽæ°ããã
npm test <ãã¹ããããããã±ãŒãžå>ãå®è¡ã
æ¢åã®ããã±ãŒãžãç·šéãã PR ãäœæãããšã dt-bot ãä»ãŸã§ã®åå®çŸ©äœè
ã«@ã¡ã³ã·ã§ã³ãéããŸãã
ããã¡ã³ã·ã§ã³ãèªåã§ã€ããªãã£ãå Žåã¯ã PR ã®ã³ã¡ã³ãã«ãŠããªããã¡ã³ã·ã§ã³ãéã£ãŠãã ããã
æ°ããããã±ãŒãžãäœæãã
ãããããªããã©ã€ãã©ãªã®äœè ã§ããã®ã©ã€ãã©ãªã TypeScript ã§æžãããŠããå Žåã¯ã Definitely Typed ã§åå®çŸ©ãå ¬éããã®ã§ã¯ãªããã©ã€ãã©ãªã®ããã±ãŒãžèªäœã«èªåçæãããåå®çŸ©ãã¡ã€ã«ããã³ãã«ããŠãã ããã
npm ã®ããã±ãŒãžã«åå®çŸ©ã远å ããå Žåã¯ãããã±ãŒãžãšååã§ãã£ã¬ã¯ããªãäœæããŠãã ããã
npm äžã«ãªãããã±ãŒãžã®åå®çŸ©ã远å ãããå Žåã¯ããã®ååã npm äžã®ããã±ãŒãžãç«¶åããªãã確èªããŠãã ããã
ïŒnpm info <my-package> ã³ãã³ãã§ã <my-package> ããã±ãŒãžãååšãããã©ãã確èªã§ããŸããïŒ
åå®çŸ©ããã±ãŒãžã¯æ¬¡ã®ãããªæ§é ã«ããå¿ èŠããããŸã:
| ãã¡ã€ã« | çšé |
|---|---|
index.d.ts |
åå®çŸ©ãå«ãŸããã |
<ããã±ãŒãžå>-tests.ts |
åå®çŸ©ããã¹ããããµã³ãã«ã³ãŒããå«ãŸããããã®ã³ãŒãã¯å®è¡ã¯ãããŸããããåãã§ãã¯ã¯ãããŸãã |
tsconfig.json |
ããã±ãŒãžå
ã§ tsc ãå®è¡ããã®ã«å¿
èŠã |
tslint.json |
Lint ãæå¹ã«ããã |
ãããã®ãã¡ã€ã«ãçæããã«ã¯ã npm 5.2.0 以äžã§ã¯ npx dts-gen --dt --name <ããã±ãŒãžå> --template module ãããããå€ãç°å¢ã§ã¯ npm install -g dts-gen ãš dts-gen --dt --name <ããã±ãŒãžå> --template module ãå®è¡ããŠãã ããã
dts-gen ã®å
šãªãã·ã§ã³ã¯ãã¡ãã§ç¢ºèªã§ããŸãã
index.d.ts ã®ä»ã«ã .d.ts ãã¡ã€ã«ãããå Žåã¯ããããã index.d.ts ããã¹ãã³ãŒãã®ããããã«ãããŠåç
§ãããŠãããã©ãã確èªããŠãã ããã
Definitely Typed ã®ã¡ã³ããŒã¯åžžã«æ°ãã PR ããã§ãã¯ããŠããŸãããä»ã® PR ã®æ°ã«ãã£ãŠã¯å¯Ÿå¿ãé ããå Žåãããããšããäºæ¿ãã ããã
base64-js ããããã±ãŒãžã®ãµã³ãã«ãšããŠåèã«ããã®ãããã§ãããã
ããã±ãŒãžãåé€ãã
ããã±ãŒãžã«åå®çŸ©ããã³ãã«ãããŠããå Žåãæ··ä¹±ãé¿ããããã« Definitely Typed åŽã®åå®çŸ©ã¯åé€ããŸãã
npm run not-needed -- <typingsPackageName> <asOfVersion> [<libraryName>] ãå®è¡ãããšããã±ãŒãžãåé€ã§ããŸãã.
<typingsPackageName>: åé€ããããã£ã¬ã¯ããªåã<asOfVersion>:@types/<typingsPackageName>ã«å¯ŸããŠã¹ã¿ãïŒstubïŒãå ¬éãããããŒãžã§ã³ãçŸåšå ¬éäžã®ããŒãžã§ã³ããæ°ãããã〠npm äžã®<libraryName>ã®ããŒãžã§ã³ãšããããå¿ èŠããããŸãã<libraryName>: Definitely Typed åŽã®åå®çŸ©ã®ä»£ãããšãªã npm ã®ããã±ãŒãžåãåºæ¬çã«<typingsPackageName>ãšäžèŽãããã®å Žåã¯çç¥ã§ããŸãã
åé€ãããããã±ãŒãžãåç
§ããŠãããä»ã® Definitely Typed äžã®ããã±ãŒãžã¯å
šãŠãã©ã€ãã©ãªã«ãã³ãã«ãããŠããåå®çŸ©ãåç
§ããããã«æŽæ°ããå¿
èŠããããŸãã
npm run test-all ãå®è¡ããéã®ãšã©ãŒãåç
§ããããšã§ãæŽæ°ãå¿
èŠãªã©ã€ãã©ãªã®ãªã¹ãã確èªã§ããŸãã
ãšã©ãŒãä¿®æ£ããã«ã¯ã package.json ã远å ãã "dependencies": { "<libraryName>": "x.y.z" } ãšèšè¿°ããŸãã
ããšãã°äžèšã®ããã«ãªããŸã:
{
"private": true,
"dependencies": {
"<libraryName>": "^2.6.0"
}
}
<libraryName> ã«äŸåããã¢ãžã¥ãŒã«ã« package.json ã远å ããå Žåã¯ã DefinitelyTyped-tools ã® allowedPackageJsonDependencies.txt ã« <libraryName> ã远å ãã PR ã䜵ããŠäœæããå¿
èŠããããŸãã
ããã±ãŒãžã Definitely Typed ã«ååšããªãã£ãå Žåã¯ã notNeededPackages.json ã«è¿œå ããå¿
èŠã¯ãããŸããã
ãã¹ãã®å®è¡
npm test <ãã¹ããããããã±ãŒãžå>ïŒ<ãã¹ããããããã±ãŒãžå>ãããã±ãŒãžåã«çœ®ãæããïŒãå®è¡ããŠã倿Žããã¹ãããŠãã ããã
ãã®ã¹ã¯ãªãã㯠dtslint ã䜿çšããŠã dts ãã¡ã€ã«ã«å¯Ÿã TypeScript ã³ã³ãã€ã©ãå®è¡ããŠããŸãã
Naming
npm ã®ããã±ãŒãžã«åå®çŸ©ã远å ããå Žåã¯ãããã±ãŒãžãšååã§ãã£ã¬ã¯ããªãäœæããŠãã ããã
npm äžã«ãªãããã±ãŒãžã®åå®çŸ©ã远å ãããå Žåã¯ããã®ååã npm äžã®ããã±ãŒãžãç«¶åããªãã確èªããŠãã ããã
ïŒnpm info <my-package> ã³ãã³ãã§ã <my-package> ããã±ãŒãžãååšãããã©ãã確èªã§ããŸããïŒ
If a non-npm package conflicts with an existing npm package try adding -browser to the end of the name to get <my-package>-browser.
<ããã±ãŒãžå>-tests.ts
ããã±ãŒãžã«ã¯ <ããã±ãŒãžå>-tests.ts ãå¿
èŠã§ãããã®ãã¡ã€ã«ã¯ããã¡ã€ã«å
ã§ã€ã³ããŒãããŠããä»ã® *.ts ãšããããŠããã¹ãçšã®ãã¡ã€ã«ã«ãªããŸãã
ã¢ãžã¥ãŒã«ã®ãã©ã«ãã«ãã¹ãçšãã¡ã€ã«ãèŠåœãããªãå Žåã¯ã <ããã±ãŒãžå>-tests.ts ãäœæããŠãã ããã
ãããã®ãã¡ã€ã«ã¯ã @types/<ããã±ãŒãžå> ã§ååŸããã *.d.ts ãã¡ã€ã«ãããšã¯ã¹ããŒãããã API ãæ€èšŒããã®ã«äœ¿ãããŸãã
*.d.ts ãã¡ã€ã«ã倿Žããå Žåã¯ã察å¿ãã *.ts ãã¡ã€ã«ã倿Žã㊠API ãã©ã®ããã«äœ¿ããããã瀺ããä»è
ãæå³ããããªãã®ã³ãŒããç Žå£ããªãããã«ããŸãã
äžèšã¯ã .d.ts å
ã®é¢æ°ã«æ°ããåŒæ°ã远å ãã倿Žã®äŸã§ã:
index.d.ts:
- export function twoslash(body: string): string
+ export function twoslash(body: string, config?: { version: string }): string
<ããã±ãŒãžå>-tests.ts:
import {twoslash} from "./"
// $ExpectType string
const result = twoslash("//")
+ // ãªãã·ã§ã³ã®åŒæ°ã«å¯Ÿå¿
+ const resultWithOptions = twoslash("//", { version: "3.7" })
+ // åŒæ°ãæ£ãããªããšã
+ // @ts-expect-error
+ const resultWithOptions = twoslash("//", { })
ããã©ããããã¹ãã³ãŒããæžãå§ããã°ãããããããªããšãã¯ããã®ã¢ãžã¥ãŒã«ã® README ã«æžãããŠããµã³ãã«ããã¹ãããã³ãŒãããå§ããã®ãããã§ãããã
ã¬ããžããªã®ã«ãŒãã§ npm test <ãã¹ããããããã±ãŒãžå> ãå®è¡ãããšããã®ã³ãã³ãã¯ãã¡ã€ã«ã倿Žãããç¶æ
ã§ãã¹ããå®è¡ããã®ã§ã倿Žãæ€èšŒããããšãã§ããŸãã
åŒãäžããããåã§ããã確èªããã«ã¯ $ExpectType ããã³ã³ãã€ã«ãšã©ãŒã«ãªããã確èªããã«ã¯ @ts-expect-error ããããã䜿ããŸãã äŸ:
// $ExpectType void
f(1);
// @ts-expect-error
f("one");
詳ããã¯ã dtslint ã® README ãåç §ããŠãã ããã
Linter: tslint.json
äœããã®çç±ã§äœããã®Lintã«ãŒã«ãç¡å¹åããå¿
èŠãããå Žåã¯ãç¹å®ã®è¡ãç¡å¹åãã // tslint:disable-next-line:[ruleName] ã䜿ãç¹å®ã®è¡ãç¡å¹åããããšã§ãç¡å¹ã«ããããšãã¬ãã¥ãŒã§ããããã«ããŸãã
(远å ã®å
容ãæã€å€ãLintèšå®ããããŸãããæ°ããäœæ¥ã§ã¯ãã®ãããªèšå®ã倿Žããå¿
èŠã¯ãªãã¯ãã§ãã)
tsconfig.json
tsconfig.json ãç·šéããŠããã¹ãã³ãŒããã¡ã€ã«ã "target": "es6" ã®æå®ïŒ async 颿°ã«å¿
èŠïŒã "jsx" ã³ã³ãã€ã©ãªãã·ã§ã³ã远å ãããã "lib" ãã£ãŒã«ãã«èšå®ã远å ãããããŠãã ããã
package.json
åºæ¬çã«ã¯ãã®ãã¡ã€ã«ã¯äžèŠã§ãã
DefinitelyTyped å€ã®ã¢ãžã¥ãŒã«ã«äŸåããªãããã±ãŒãžã«ã€ããŠã¯ã DefinitelyTyped ã®ããã±ãŒãžå
¬é bot ã package.json ãäœæããŸãã
@types 以å€ã®ããã±ãŒãžãšã®äŸåé¢ä¿ãæå®ãããå Žåã¯ã package.json ãããã±ãŒãžã«å«ããŠãããã§ãã
Pikaday ãè¯ãäŸã§ãããã
èªåã§ package.json ãäœæããå ŽåããäŸåé¢ä¿ãæå®ãã以å€ã®ãã£ãŒã«ãïŒäŸ: "description"ïŒã¯èš±å¯ãããŸããã
ãŸããæå®ããäŸåã¢ãžã¥ãŒã«ãäŸåèš±å¯æžã¿ããã±ãŒãžäžèЧã«è¿œå ããå¿
èŠããããŸãã
@types ããã±ãŒãžãæªæã®ããããã±ãŒãžã«äŸåããªãããã«ããããããã®äžèŠ§ã¯æåã§æŽæ°ãããŸãã
ããçšã§ããã @types ããã±ãŒãžãåé€ïŒdeletedïŒãããããå
ã©ã€ãã©ãªã«åå®çŸ©ãå«ãŸããããã«åé€ïŒremovedïŒãããããããã€ãã®åé€ãããå€ã @types ããã±ãŒãžã«äŸåããå¿
èŠãããå Žåã¯ã package.json ã«äŸåã¢ãžã¥ãŒã«ãšã㊠@types ããã±ãŒãžãå«ããããšãã§ããŸãã
äŸåèš±å¯æžã¿ããã±ãŒãžäžèЧã«è¿œå ããéã«å¿
ããã®æšã説æããã¡ã³ãããŒãææ¡ã§ããããã«ããŠãã ããã
ãããããã¹
- ã¯ããã«ããã³ãããã¯ã«èšèŒãããŠããã¢ããã€ã¹ã«åŸã£ãŠãã ããã
- ãã©ãŒãããã«ã€ããŠ: 4åã®ã¹ããŒã¹ã䜿ã£ãŠãã ããããã®ã¬ããžããªã§ã¯ Prettier ãã»ããã¢ãããããŠããã®ã§ã
npm run prettier -- --write 'path/to/package/**/*.ts'ã§å®è¡ã§ããŸããã¢ãµãŒã·ã§ã³ã䜿çšããŠããå Žåã// prettier-ignoreã䜿ã£ãŠãã®è¡ããã©ãŒããã察象ããé€å€ããŠãã ããã// prettier-ignore // @ts-expect-error const incompleteThemeColorModes: Theme = { colors: { modes: { papaya: { function sum(nums: number[]): number: 颿°ãåŒæ°ã«å¯ŸããŠæžã蟌ãŸãªããšãã¯ReadonlyArrayã䜿çšããŠãã ãããinterface Foo { new(): Foo; }: ãã㯠new å¯èœãª object ã®åå®çŸ©ã§ããæžãããã£ãã®ã¯declare class Foo { constructor(); }ã§ã¯ãããŸãããïŒconst Class: { new(): IClass; }: new å¯èœãªå®æ°ã§ã¯ãªããã¯ã©ã¹å®çŸ©class Class { constructor(); }ã䜿ã£ãŠãã ãããgetMeAT<T>(): T: åãã©ã¡ãŒã¿ãŒã颿°ã®åŒæ°ã®åã§å šã䜿çšãããªãå Žåããã®é¢æ°ã¯æ¬åœã®ãžã§ããªãã¯é¢æ°ã«ã¯ãªã£ãŠããŸãããåæ³šéã¿ããã«èª€éåãããäœããæžããŠããã ãã§ãã å®éã®åãåæ³šéãšããŠäœ¿çšããŠãã ããïŒäŸ:getMeAT() as numberïŒã åãã©ã¡ãŒã¿ãŒã䜿çšããŠããäŸ:function id<T>(value: T): T;ã 䜿çšããŠã¯ãããªãäŸ:function parseJson<T>(json: string): T;ã äŸå€:new Map<string, number>()ã¯OKã§ããFunctionåãObjectåïŒè𳿳š: 倧æåã®Oããå§ãŸãããšã«æ³šæïŒã䜿çšããã®ã¯åºæ¬çã«è¯ããããŸãããã»ãšãã©ã®å Žåã§ããã詳ããåãæå®ããããšãå¯èœã§ããããšãã°ã颿°ã¯(x: number) => numberã object ã¯{ x: number, y: number }ãšæžããŸããã©ã®ãããªåã«ãªããå šãããããªããšãã¯ãObjectåã§ã¯ãªãanyåãæ£ããã§ããäœããã® object ã§ããããšããããããªããšãã¯ãObjectåã{ [key: string]: any }ã§ã¯ãªããobjectåïŒè𳿳š: å°æåã®oããå§ãŸãããšã«æ³šæïŒã䜿ã£ãŠãã ãããvar foo: string | any:anyãå ±çšäœåã§äœ¿çšããå Žåãæçµçãªåã¯anyåã«ãããªããŸããããããã£ãŠãäŸç€ºãããåæ³šéã§ã¯ãstringã®éšåãæçšã«èŠããŸãããå®éã«ã¯åã«anyãšæå®ãããšã以äžã®åãã§ãã¯ã¯è¡ãããŸããã ã·ãã¥ãšãŒã·ã§ã³ã«ããããŸãããanyãstringãstring | objectãä»£æ¿æ¡ãšããŠèããããŸãã
OTHER_FILES.txt
ãããã¹ãããããã index.d.ts ã§ãåç
§ãããªããã¡ã€ã«ãããå Žåã¯ããã®ãã¡ã€ã«åã OTHER_FILES.txt ãšããååã®ãã¡ã€ã«ã«è¿œèšããŠãã ããããã®ãã¡ã€ã«ã¯ãåå®çŸ©ããã±ãŒãžã«å«ããããã®ä»ã®ãã¡ã€ã«ãã1è¡ã«ã€ã1ãã¡ã€ã«ã§èšè¿°ããäžèЧã§ãã
åå®çŸ©ã®ãªãŒããŒ
DefinitelyTyped ã§ã¯ãããç¹å®ã®ã¢ãžã¥ãŒã«ã®åå®çŸ©ã®å質ã管çããŠãã人ããåå®çŸ©ã®ãªãŒããŒããšããŠããŸãã
- ããªãã®ååããªã¹ãã«èŒãããšã誰ããããã±ãŒãžã«å¯Ÿã㊠PR ã issue ãäœæããéã«ã GitHub ã®ãŠãŒã¶ãŒåã«ãã£ãŠããªãã«éç¥ãããŸãã
- ãªãŒããŒã PR ãã¬ãã¥ãŒãããšããã®ã¬ããžããªå šäœã管çãã bot ã¯ããã®ã¬ãã¥ãŒãä»ããéèŠãªãã®ãšããŠæ±ããŸãã
- DefinitelyTyped ã®ã¡ã³ãããŒã¯ãå®å®ãããšã³ã·ã¹ãã ã確ä¿ããã¹ããåå®çŸ©ã®ãªãŒããŒã«ä¿¡çšã眮ããŠããŸãã軜çã«ãªãŒããŒã«ãªãã®ã¯ãæ§ããã ããã
åå®çŸ©ã®ãªãŒããŒã«ãªãã«ã¯:
// Definitions by: Alice <https://github.com/alice>, Bob <https://github.com/bob>ãšãããããªåœ¢åŒã§ãè¡ã®çµããã«ããªãã®ååã远å ããŠãã ããã- è¡ãé·ããªãããã§ããã°ãè€æ°è¡ã«ããŠãããŸããŸããã
// Definitions by: Alice <https://github.com/alice> // Bob <https://github.com/bob> // Steve <https://github.com/steve> // John <https://github.com/john>
åå®çŸ©ã®ãªãŒããŒã®ãªã¹ãããé±ã«1å .github/CODEOWNERS ã«åæãããŸãããã®ãã¡ã€ã«ãç§ãã¡ã®ä¿¡é Œã®æºã«ãªããŸãã
ãããã質å
å³å¯ã«ã¯ããã®ã¬ããžããªãš npm äžã® @types ããã±ãŒãžã¯ã©ãé¢ä¿ããŠããŸããïŒ
DefinitelyTyped-tools ããmaster ãã©ã³ãã®å
容ãèªåçã«ã npm ã® @types ã¹ã³ãŒãã«å
¬éããŠãããŠããŸãã
PR ãéããŸããããã©ããããã§ããŒãžãããŸããïŒ
äžæŠã«ã¯èšããŸããããã»ãšãã©ã® PR ã¯1é±é以å ã«ããŒãžãããŸãã ã¢ãžã¥ãŒã«ã®äœè ã«ããããŒãžãããããšãããããã®å Žåã¯ããªãæ©ãåŠçãããŸãã 倧ãŸãã«ã¯æ¬¡ã®ããã«ãããã§ãããã
ã¢ãžã¥ãŒã«ã®åå®çŸ©ã®ã¿ã®å€æŽã§ã察å¿ãããã¹ãããã¡ããšå€æŽãããŠãã PR ã¯æ©ãããŒãžããã
éäŸãåå®çŸ©ãã¡ã€ã«ã®ããããŒã«èŒã£ãŠããèè ãæ¿èªãã PR ã¯ããæ©ãããŒãžãããŸããæ°ããåå®çŸ©ã® PR ã¯ã DefinitelyTyped ã®ã¡ã³ãããŒããã®ã¬ãã¥ãŒãå¿ èŠã«ãªãã®ã§æéãããããŸããå PR 㯠TypeScript ã DefinitelyTyped ã®ããŒã ã¡ã³ããŒãããŒãžåã«ã¬ãã¥ãŒããŸãã人çºçèŠå ã§é ããçºçããå Žåãããã®ã§ããã°ãããåŸ ã¡ãã ãããã¡ã³ãããŒããªãŒãã³ãª PR ãåŠçããŠããéã¯ã New Pull Request Status Board ã§é²æã確èªã§ããŸãã
PR ã¯ããŒãžãããŸãããã @types npm ããã±ãŒãžã¯ãã€æŽæ°ãããŸããïŒ
npm ããã±ãŒãžã¯æ°åã§æŽæ°ãããŸãããã1æé以äžããã£ãŠããå Žåã¯ã TypeScript ã³ãã¥ããã£ã® Discord ãµãŒããŒã® Definitely Typed ã®ãã£ã³ãã« ã« PR çªå·ãé£çµ¡ããŠãã ãããåœçªã®ã¡ã³ãããŒãé©åãªããŒã ã¡ã³ããŒã«èª¿æ»ãäŸé ŒããŸãã
äœæäžã®åå®çŸ©ãå¥ã®åå®çŸ©ã«äŸåããŠããŸãã <reference types="" /> ã䜿ããã€ã³ããŒãããããã©ã¡ããããã§ããïŒ
åç
§ããŠããã¢ãžã¥ãŒã«ãå€éšã¢ãžã¥ãŒã«ã®å ŽåïŒexport ã䜿ã£ãŠããå ŽåïŒã¯ãã€ã³ããŒãããŠãã ããã
åç
§ããŠããã¢ãžã¥ãŒã«ãã¢ã³ããšã³ã ã¢ãžã¥ãŒã«ã®å ŽåïŒdeclare module ã䜿ã£ãŠããããã°ããŒãã«ã«å®£èšããŠããå ŽåïŒã¯ã <reference types="" /> ã䜿çšããŠãã ããã
tslint.json ãç¡ãã£ããã tsconfig.json ãã "noImplicitAny": true ã "noImplicitThis": true ã "strictNullChecks": true ãæãããããŠããããã±ãŒãžããããŸãã
ãããã¯ãç§ãã¡ããŸã ææ¡ããããŠããªãäžåã§ããä¿®æ£ãã PR ã®äœæããã²ãé¡ãããŸãã
åå®çŸ©ããªã¯ãšã¹ããããã§ãã
çŸåšãªã¯ãšã¹ããããŠããåå®çŸ©ã¯ãã¡ãã§ãã
DOM ã«å¯Ÿããåå®çŸ©ã¯ã©ãããã°ããã§ããïŒ
ãã®åããŠã§ãæšæºã®äžéšã§ããã°ã TSJS-lib-generator ã«å¯ŸããŠã³ã³ããªãã¥ãŒãããŠãã ãããã³ã³ããªãã¥ãŒãããå
容ããããã©ã«ãã® lib.dom.d.ts ã«åæ ãããŸãã
ã¢ãžã¥ãŒã«ããšã¯ã¹ããŒãããŠãªãããã±ãŒãžã§ã¯ã ES6 æ¹åŒã®ã€ã³ããŒãã䜿ããããã«ããããã«ã空ã®åå空éã远å ãã¹ãã§ããïŒ
chai-http ãªã©ã®ããã€ãã®ããã±ãŒãžã§ã¯é¢æ°ããšã¯ã¹ããŒãããŠããŸãã
ãã®ã¢ãžã¥ãŒã«ã ES6 æ¹åŒã® import * as foo from "foo"; ã§ã€ã³ããŒããããšæ¬¡ã®ãããªãšã©ãŒã«ãªããŸãã
error TS2497: Module 'foo' resolves to a non-module entity and cannot be imported using this construct
ãã®ãšã©ãŒã¯ãåãååã®ç©ºã®åå空éã颿°ã®å®£èšãšäžç·ã«ããããšã§æå¶ã§ããŸããããã®æ £äŸã¯é¿ããã¹ãã§ãã ãã®ä»¶ã«ã€ããŠã¯ãã Stack Overflow ã®åçãåŒçšãããŠããŸãã
import foo = require("foo"); æ§æã䜿ã£ãŠã¢ãžã¥ãŒã«ãã€ã³ããŒãããã»ããé©åã§ãããã
ããã§ããªã import foo from "foo"; ã®ãããªããã©ã«ãã€ã³ããŒãã䜿ãããå Žåã¯ã2ã€éžæè¢ããããŸã:
- ã¢ãžã¥ãŒã«ã®å®è¡ç°å¢ã§é ECMAScript ã¢ãžã¥ãŒã«åãã®çžäºéçšäœç³»ãæŽã£ãŠããå Žåãã€ãŸãããã©ã«ãã€ã³ããŒããããªãã®ç°å¢ïŒ Webpack ã SystemJS ã esm ãªã©ïŒã§åäœããå Žåã¯ã
--allowSyntheticDefaultImportsã³ã³ãã€ã©ãŒ ãªãã·ã§ã³ã䜿çšã§ããŸãã - TypeScript åŽã«é ECMAScript ã®å¯Ÿå¿ãããããå Žåã¯ã
--esModuleInteropã³ã³ãã€ã©ãŒ ãªãã·ã§ã³ã䜿çšã§ããŸãïŒ TypeScript 2.7 以éïŒã
ããã±ãŒãžã§ã¯ export = ã䜿ãããŠããŸãããããã©ã«ãã€ã³ããŒãã䜿ããããã«ãããã®ã§ã export = ã export default ã«å€ããŠãè¯ãã§ããïŒ
1ã€åã®åçã®ç¹°ãè¿ãã«ãªããŸããã --allowSyntheticDefaultImports
ãŸã㯠--esModuleInterop
ã³ã³ãã€ã©ãŒ ãªãã·ã§ã³ã確èªããŠãã ããã
åå®çŸ©ãæ£ç¢ºã«èšè¿°ãããŠãããšãã¯å€æŽããªãã§ãã ããã
npm ããã±ãŒãžã§ã¯ãã¢ãžã¥ãŒã«ã node -p 'require("foo")' ã§ã€ã³ããŒãã§ãããšã㯠export = ãã node -p 'require("foo").default' ã§ã€ã³ããŒãã§ãããšã㯠export default ãããããæ£ãã衚èšã§ãã
TypeScript 3.3 以äžã«ããæ©èœã䜿ãããã§ãã
ãã®å Žåã¯ãåå®çŸ©ãã¡ã€ã«ã®ããããŒã®æåŸã®è¡ïŒ// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped ã®æ¬¡è¡ïŒã«ã // Minimum TypeScript Version: 3.3 ãšãã£ãã³ã¡ã³ãã远å ããŠãã ããã
ãªããããšãã°ã3.7 以äžãçšãšã3.6 以äžãçšã®åå®çŸ©ãããããåæã«ç®¡çããå¿
èŠãããå Žåã¯ã typesVersions æ©èœã䜿çšããããšã«ãªããŸãã
ãã®æ©èœã®è©³ãã説æã¯ TypeScript å
¬åŒããã¥ã¡ã³ãã確èªããŠãã ããã
以äžã«ãç°¡æçãªäŸã瀺ããŸã:
-
package.jsonãããã±ãŒãžã«è¿œå ããæ¬¡ã®å 容ãèšè¿°ãã:{ "private": true, "types": "index", "typesVersions": { "<=3.6": { "*": ["ts3.6/*"] } } } -
åå®çŸ©ã®ãã£ã¬ã¯ããªå ã«ã
typesVersionsã«æå®ãããµããã£ã¬ã¯ããªïŒäžã®äŸã§ã¯ts3.6/ïŒãäœæãããts3.6/ã TypeScript 3.6 以äžçšã®ãã£ã¬ã¯ããªã«ãªãã®ã§ãæ¢åã®åå®çŸ©ãšãã¹ããããã«ã³ããŒãããåå®çŸ©ãã¡ã€ã«ã®ããããŒã¯
index.d.tsã®ã¿ã«ããã°ããã®ã§ãts3.6/index.d.tsããã¯åé€ããã -
ts3.6/tsconfig.jsonã®baseUrlã»typeRootsãªãã·ã§ã³ã«æ£ãããã¹ãæå®ãããæ¬¡ã®ãããªå€ã«ãªãã¯ãã§ã:{ "compilerOptions": { "baseUrl": "../../", "typeRoots": ["../../"] } } -
ããã±ãŒãžã®ã«ãŒãã«æ»ãã䜿çšããã TypeScript 3.7 ã®æ©èœã远å ããã ããã§ãããã±ãŒãžã䜿çšããããšãã¯ã TypeScript 3.6 以äžã®å Žåã¯
ts3.6/index.d.tsãã TypeScript 3.7 以äžã®å Žåã¯index.d.tsãããããèªã¿ã«ããããã«ãªããŸããbluebird ã¢ãžã¥ãŒã«ãåèã«ããŠãã ããã
ããã©ã«ãã§ã¯ TypeScript ã«ååšããªã DOM API ã远å ãããã§ãã
ãã㯠TSJS-Lib-Generator ã«å«ãããã®ãããããªãã®ã§ããã¡ãã®æ¹éã確èªããŠãã ããã
該åœãããŠã§ãæšæºã®ä»æ§ããŸã è皿段éãªãããã®ã¬ããžããªã«å«ããããŸãã
åå®çŸ©ããã±ãŒãžå㯠dom- ããå§ãŸãããã«ããåå®çŸ©ããããŒã® "Project" ãªã³ã¯ã«ä»æ§æžãžã®ãªã³ã¯ã匵ã£ãŠãã ããã
仿§æžãèçš¿ããè±ãããšãããã±ãŒãžã¯ Definitely Typed ããåé€ããã察å¿ãã @types ããã±ãŒãžã¯éæšå¥šãšãªããŸãã
Definitely Typed ããã±ãŒãžã®ããŒãžã§ã³ãšã察å¿ããã©ã€ãã©ãªæ¬äœã®ããŒãžã§ã³ã¯ã©ã®ããã«é¢ä¿ããŠããŸããïŒ
泚æ: ãã®ã»ã¯ã·ã§ã³ãèªãã«ã¯ã»ãã³ãã£ã㯠ããŒãžã§ãã³ã°ã®ç¥èãå¿ èŠã§ãã
Definitely Typed ã®åããã±ãŒãžã¯ npm ã«å
¬éãããéã«ããŒãžã§ã³çªå·ãä»ãããŸãã
DefinitelyTyped-tools ïŒ@types ããã±ãŒãžã npm ã«å
¬éããããŒã«ïŒã¯ãããã±ãŒãžã® index.d.ts ã®1è¡ç®ã«èŒã£ãŠãã ã¡ãžã£ãŒ.ãã€ã㌠ããŒãžã§ã³çªå·ã䜿ã£ãŠãåå®çŸ©ããã±ãŒãžã®ããŒãžã§ã³ãä»ããŸãã
ããšãã°ãäžèšã¯å·çæç¹ïŒè𳿳š: è±èªçå·çåœæïŒã® Node ã®åå®çŸ©ïŒããŒãžã§ã³ 10.12.x çšïŒã®æåã®æ°è¡ã§ã:
// Type definitions for Node.js 10.12
// Project: https://nodejs.org/
// Definitions by: Microsoft TypeScript <https://github.com/Microsoft>
// Definitely Typed <https://github.com/DefinitelyTyped>
// Alberto Schiabel <https://github.com/jkomyno>
1è¡ç®ã®çµããã 10.12 ãªã®ã§ã @types/node ããã±ãŒãžã® npm ã§ã®ããŒãžã§ã³çªå·ã 10.12.x ã«ãªããŸãã
index.d.ts ã®1è¡ç®ã«ã¯ ã¡ãžã£ãŒ.ãã€ã㌠ããŒãžã§ã³ã®ã¿ïŒäŸ: 10.12ïŒãå«ããŸãããããããŒãžã§ã³ã¯å«ããªãã§ãã ããïŒ10.12.4 ã®ããã«ã¯ããªãïŒã
ããã¯ãã¡ãžã£ãŒããŒãžã§ã³ãšãã€ããŒããŒãžã§ã³ã®çªå·ã®ã¿ããã©ã€ãã©ãªæ¬äœãšåå®çŸ©ããã±ãŒãžã§æããããã§ãã
åå®çŸ©ããã±ãŒãžã®ãããããŒãžã§ã³çªå·ïŒ10.12.0 ãªã .0 ã®éšåïŒã¯ã Definitely Typed åŽã§0ã«åæåããã察å¿ããã©ã€ãã©ãªã®åãã¡ãžã£ãŒã»ãã€ããŒããŒãžã§ã³çšã® @types/node ããã±ãŒãžã npm ã«å
¬éããããã³ã«å¢ããŠãããŸãã
ãšãã©ããåå®çŸ©ããã±ãŒãžãšã©ã€ãã©ãªæ¬äœã®ããŒãžã§ã³ãæããªããªãããšããããŸãã èããããåå ããã©ã€ãã©ãªäœ¿çšè ã«ãšã£ãŠäžäŸ¿ã«æãé ã«äžèšã«åæããŸãïŒè𳿳š: äžçªå°ããã®ãäžçªäžïŒã äžçªäžã®ã¿ãäžè¬çã«åé¡ãšãããŸãã
- å è¿°ããéããåå®çŸ©ããã±ãŒãžã®ãããããŒãžã§ã³ã¯ã©ã€ãã©ãªæ¬äœãšã¯ç¡é¢ä¿ã§ãã ããã«ãã Definitely Typed åŽã§ãåãã¡ãžã£ãŒã»ãã€ããŒããŒãžã§ã³çšã®åå®çŸ©ãå®å šã«æŽæ°ããããšãã§ããŸãã
- ããã±ãŒãžãæ°æ©èœã§æŽæ°ãããšãã¯ãã©ã€ãã©ãªæ¬äœã®ããŒãžã§ã³ãšåãããã«ãåå®çŸ©ããã±ãŒãžã®ããŒãžã§ã³çªå·ãæŽæ°ããŠãã ããã
JavaScript ã®ããã±ãŒãžãšããããã®
@typesããã±ãŒãžã®ããŒãžã§ã³ãäžèŽããããšããŠãŒã¶ãŒåŽã§ææ¡ãããŠããã°ãnpm updateã¯åºæ¬çã«æ£åžžã«åäœããŸãã - åå®çŸ©ããã±ãŒãžã®æŽæ°ãã©ã€ãã©ãªæ¬äœã®æŽæ°ããé ããããšã¯ãããããŸããããã¯ãã©ã€ãã©ãªã«æ°ããæ©èœããªãªãŒã¹ãããéã« Definitely Typed ãæŽæ°ããŠããã®ããã¡ã³ãããŒã§ã¯ãªãã©ã€ãã©ãªäœ¿çšè ã§ããå Žåãå€ãããã§ãã ãã®ãããé¢åèŠã®è¯ãã³ãã¥ããã£ã¡ã³ããŒããæ°ãããªãªãŒã¹çšã«åå®çŸ©ãæŽæ°ãã PR ãéã£ãŠããããŸã§ãæ°æ¥ãæ°é±éãå Žåã«ãã£ãŠæ°ãæãããå ŽåããããŸãã ããããã«ãã£ãŠãå°ãã§ãããããäžã®äžã«èŠãããšæãå€åã«ããªãããªã£ãŠãããªãããã®é¢åèŠã®è¯ãã³ãã¥ããã£ã¡ã³ããŒã«ãªãã®ã¯ãããã§ããããïŒ
â ã©ã€ãã©ãªã®åå®çŸ©ãæŽæ°ããéã¯ã index.d.ts ã®1è¡ç®ã® ã¡ãžã£ãŒ.ãã€ã㌠ããŒãžã§ã³ã察象ã®ã©ã€ãã©ãªã®ããŒãžã§ã³ã«å¿
ãåãããŠãã ããïŒ â
ã©ã€ãã©ãªãç Žå£çãªå€æŽãããŠãã¡ãžã£ãŒããŒãžã§ã³ãæŽæ°ãããŸãããåå®çŸ©ããã±ãŒãžã¯ã©ã®ããã«æŽæ°ããã°ããã§ããïŒ
ã»ãã³ãã£ã㯠ããŒãžã§ãã³ã°ã§ã¯ãç Žå£çãªå€æŽãè¡ãªã£ãéã«ãå¿
ãã¡ãžã£ãŒããŒãžã§ã³çªå·ãå¢ããããã«å®ããããŠããŸãã
ããšãã°ãããã©ã€ãã©ãªãããŒãžã§ã³ 3.5.8 ããªãªãŒã¹ããåŸã public ã«ãšã¯ã¹ããŒãããŠãã颿°ãåé€ããå Žåãæ¬¡ã®ãªãªãŒã¹ã§ã¯ããŒãžã§ã³ 4.0.0 ã«äžããªããã°ãªããŸããã
ãããŠãã©ã€ãã©ãªãããŒãžã§ã³ 4.0.0 ããªãªãŒã¹ãããã Definitely Typed åŽã®åå®çŸ©ããã±ãŒãžãåæ§ã«ãã©ã€ãã©ãª API ãžã®ç Žå£çãªå€æŽãå«ãã 4.0.0 ã«æŽæ°ããå¿
èŠããããŸãã
ã»ãšãã©ã®ã©ã€ãã©ãªã«ã¯ãç Žå£çãªå€æŽãå«ãã æ¬¡ã®ããŒãžã§ã³ã«ããä¹ãæããªã䜿çšè ãå€ãããŸããããã«ã¯ãã®ã©ã€ãã©ãªã«äŸåããŠããä»ã®ããã±ãŒãžã®ã¡ã³ãããŒãå«ãŸãã圌ããæ°ããããŒãžã§ã³ã«ããããŠèªåãã¡ã®ã³ãŒããæžãçŽãã«ã¯æ°ãæãããããšããããŸãã ãã®éã¯ãå€ãããŒãžã§ã³ã䜿çšããŠããã©ã€ãã©ãªäœ¿çšè ã®ããã«ããã®ããŒãžã§ã³ã®åå®çŸ©ã®æŽæ°ãè¡ãå¿ èŠããããããããŸããã
ããå€ãããŒãžã§ã³ã®åå®çŸ©ãæŽæ°ãç¶ãããå Žåã¯ãçŸåšã®ããŒãžã§ã³ïŒçŽã«ãå€ããããŒãžã§ã³ãšãªãæ¹ïŒçšã«æ°ãããµããã©ã«ããŒïŒäŸ: /v2/ïŒãäœæããçŸåšã®ããŒãžã§ã³ã®ãã¡ã€ã«ãã³ããŒããŠãã ããã
ã«ãŒããã©ã«ããŒã¯å¿ ãææ°ã®ïŒãæ°ãããïŒããŒãžã§ã³ã®åå®çŸ©ãå«ãŸããããã«ãªãã®ã§ãå€ãããŒãžã§ã³çšã®ãµããã©ã«ããŒå ã®ãã¡ã€ã«ã«ãããŠããã¡ããšçžå¯Ÿãã¹ãã«ãŒããã©ã«ããŒã§ã¯ãªããµããã©ã«ããŒã«åãããã«å€æŽããå¿ èŠããããŸãã
tsconfig.jsonãštslint.jsonå ã®çžå¯Ÿãã¹ãæŽæ°ããã- ãã¹ããæå³ããããŒãžã§ã³ã§å®è¡ãããããã«ããã¹ã®å€æã«ãŒã«ã远å ããã
ããšãã°ã history ã©ã€ãã©ãªã¯ããŒãžã§ã³ 2.x ãã 3.x ã®éã§ç Žå£çãªå€æŽãè¡ããŸããã
å€ãã®ãŠãŒã¶ãŒããªãå€ãããŒãžã§ã³ 2.x ç³»ã䜿çšããŠããã®ã§ãããŒãžã§ã³ 3.x ç³»ã®åå®çŸ©ã«æŽæ°ãããã£ãã¡ã³ãããŒã¯ v2 ãã©ã«ããŒãäœæããããã«å€ãããŒãžã§ã³çšã®åå®çŸ©ãå«ããããã«ããŸããã
äžèšã¯ãå·çæç¹ïŒè𳿳š: è±èªçå·çåœæïŒã® history ã¢ãžã¥ãŒã«ã® v2 ã® tsconfig.json ã®å€§ãŸããªå
容ã§ã:
{
"compilerOptions": {
"baseUrl": "../../",
"typeRoots": ["../../"],
"paths": {
"history": [ "history/v2" ]
}
},
"files": [
"index.d.ts",
"history-tests.ts"
]
}
ããã©ã€ãã©ãªã®æ°ããããŒãžã§ã³ã«ã Definitely Typed å ã®ä»ã®ããã±ãŒãžã察å¿ããŠããªãå Žåã¯ãå€ãããŒãžã§ã³ãžã®ãã¹å€æïŒpath mappingïŒã远å ããå¿ èŠããããŸãã å€ãããŒãžã§ã³ã«å¯Ÿå¿ããŠããªãããã±ãŒãžã«ããã«äŸåããŠããããã±ãŒãžã«å¯ŸããŠããååž°çã«è¡ãå¿ èŠããããŸãã
ããšãã°ã browser-sync 㯠micromatch@2 ã«äŸåããŠããããã browser-sync ã® tsconfig.json ã«ã¯ "micromatch": [ "micromatch/v2" ] ãšãããã¹å€æã远å ãããŠããŸãã
ããã«ã browser-sync ã«äŸåããŠãã browser-sync-webpack-plugin ã§ãã browser-sync ãææ°çã«æŽæ°ããããŸã§ã®éã tsconfig.json ã®äžã§åæ§ã®ãã¹å€æïŒ"micromatch": [ "micromatch/v2" ]ïŒãè¡ãå¿
èŠããããŸãã
/// <reference types=".." /> ã«ã€ããŠã¯ãã¹å€æã§ããŸãåäœããªããããäŸåã¢ãžã¥ãŒã«ã¯ import ã䜿ãå¿
èŠããããŸãã
ã°ããŒãã«ã«ã䜿ããŠã¢ãžã¥ãŒã«ãšããŠã䜿ããããã±ãŒãžã«ã€ããŠã¯ãã©ã®ããã«åå®çŸ©ããã°ããã§ããïŒ
TypeScript ãã³ãããã¯ã«ã¯ãåå®çŸ©ãæžãã«ããã£ãŠã®äžè¬çãªæ
å ±ããšãŠããããŸãšããããŠããããŸã object ãã°ããŒãã« ã¹ã³ãŒãã§äœ¿ããããã«ããªãã ES6 æ¹åŒã®ã¢ãžã¥ãŒã«æ§æã䜿ã£ãŠåå®çŸ©ãäœæããŠããåå®çŸ©ãã¡ã€ã«ã®äŸãæ²èŒãããŠããŸãããã®ææ³ã¯å®éã« big.js ã®åå®çŸ©ã§äœ¿ãããŠããŸãããã®ã¢ãžã¥ãŒã«ã¯ãŠã§ãããŒãžã§ã¯ <script> ã¿ã°ã§ã°ããŒãã«ã«èªã¿èŸŒãããšãã§ãã require ã ES6 æ¹åŒã® import ã§ã€ã³ããŒãããããšãã§ããŸãã
åå®çŸ©ãã¡ã€ã«ãã°ããŒãã«ã«ããã€ã³ããŒããããã¢ãžã¥ãŒã«ãšããŠã䜿çšã§ãããããã¹ãããã«ã¯ã次ã®ããã«ããŸãããŸã test ãã©ã«ããäœæããããã« YourLibraryName-global.test.ts ãš YourLibraryName-module.test.ts ã®2ã€ã®ãã¡ã€ã«ãçšæããŸãã global ãã¹ããã¡ã€ã«ã§ã¯ããŠã§ãããŒãžäžã§ã¹ã¯ãªãããšããŠèªã¿èŸŒãŸããã©ã€ãã©ãªãã°ããŒãã« ã¹ã³ãŒãã§äœ¿çšå¯èœã«ãªãããã«ãã¹ãããŸã â ãã®ãšããã€ã³ããŒãæ§æã¯äœ¿çšããŠã¯ãããŸããã module ãã¹ããã¡ã€ã«ã§ã¯ã import æ§æãªã©ã䜿çšããã¢ãžã¥ãŒã«ãšããŠã€ã³ããŒãããæ¹æ³ã«æ²¿ã£ãŠãã¹ãããŸãã tsconfig.json ãã¡ã€ã«å
ã§ files ããããã£ãæå®ããŠããå Žåã¯ãäž¡æ¹ããã¹ããã¡ã€ã«ãå«ããã®ãå¿ããªãã§ãã ããã big.js ã®åå®çŸ©ã§ã®å®éã®ãã¹ããã¡ã€ã«ãåèã«ããŠãã ããã
äž¡æ¹ã®ãã¹ããã¡ã€ã«ã§ãåå®çŸ©ã«å¯Ÿããå®å šãªãã¹ããè¡ãå¿ èŠã¯ãããŸãã â global ãã¹ããã¡ã€ã«ã§ã¯ã°ããŒãã«ãªèŠçŽ ã«ã¢ã¯ã»ã¹ã§ãããã®ã¿ããã¹ããã module ãã¹ããã¡ã€ã«ã§åå®çŸ©ã®å®å šãªãã¹ããè¡ãïŒãŸãã¯ãã®éãã¿ãŒã³ïŒã®ã§ãããŸããŸããã
ã¹ã³ãŒãä»ãããã±ãŒãžã«ã€ããŠã¯ã©ãããã°ããã§ããïŒ
ã¹ã³ãŒãä»ãããã±ãŒãžã@foo/barãã®åå®çŸ©ã¯ã types/foo__bar ã®äžã«å«ããŠãã ããïŒæ³š: ã¢ã³ããŒããŒ2åã§ãïŒã
dts-gen ãã¹ã³ãŒãä»ãããã±ãŒãžã®åæçæã«äœ¿çšããå Žåãçæããã tsconfig.json ã® paths ããããã£ããã¹ã³ãŒãä»ãããã±ãŒãžãæ£ããåç
§ã§ããããã«æåã§ä¿®æ£ããå¿
èŠããããŸã:
{
"paths": {
"@foo/*": ["foo__*"]
}
}
ã©ã€ã»ã³ã¹
ãã®ãããžã§ã¯ã㯠MIT License ã§ã©ã€ã»ã³ã¹ãããŠããŸãã
åå®çŸ©ãã¡ã€ã«ã®èäœæš©ã¯ãåå®çŸ©ãã¡ã€ã«ã®åé ã«æ²èŒãããŠããã³ã³ããªãã¥ãŒã¿ãŒããããã«åž°å±ããŸãã