From e9d90cced5b00c68b1d8135d8e852a5e8327749f Mon Sep 17 00:00:00 2001 From: Orta Date: Sun, 31 Jan 2021 13:24:11 +0000 Subject: [PATCH 1/6] Remove locales --- .github/CODEOWNERS | 57 -- .github/workflows/codeowners-merge.yml | 16 - .github/workflows/deploy-prod.yml | 5 - package.json | 1 + .../documentation/copy/id/Nightly Builds.md | 80 -- .../javascript/Creating DTS files From JS.md | 87 -- .../copy/id/javascript/Intro to JS with TS.md | 70 -- .../copy/id/javascript/JSDoc Reference.md | 692 ------------- .../id/project-config/Configuring Watch.md | 66 -- .../copy/id/reference/Decorators.md | 571 ----------- .../id/reference/Iterators and Generators.md | 90 -- .../documentation/copy/id/reference/JSX.md | 442 --------- .../documentation/copy/id/reference/Mixins.md | 271 ------ .../copy/id/reference/Symbols.md | 107 -- .../id/tutorials/Babel with TypeScript.md | 49 - .../copy/id/tutorials/DOM Manipulation.md | 201 ---- .../documentation/copy/id/tutorials/React.md | 26 - .../TypeScript Tooling in 5 minutes.md | 187 ---- .../documentation/copy/ja/Nightly Builds.md | 80 -- .../javascript/Creating DTS files From JS.md | 88 -- .../copy/ja/javascript/Intro to JS with TS.md | 70 -- .../copy/ja/javascript/JSDoc Reference.md | 693 ------------- .../Type Checking JavaScript Files.md | 310 ------ .../copy/ko/reference/Declaration Merging.md | 330 ------- .../ko/reference/Iterators and Generators.md | 90 -- .../documentation/copy/ko/reference/JSX.md | 435 --------- .../copy/ko/reference/Symbols.md | 107 -- .../ko/reference/Triple-Slash Directives.md | 144 --- .../copy/ko/reference/Type Inference.md | 130 --- .../copy/ko/reference/Utility Types.md | 372 ------- .../ko/tutorials/Babel with TypeScript.md | 49 - .../documentation/copy/ko/tutorials/React.md | 26 - .../TypeScript Tooling in 5 minutes.md | 187 ---- .../copy/pl/handbook-v1/The Handbook.md | 57 -- .../documentation/copy/pt/Nightly Builds.md | 80 -- .../get-started/TS for the New Programmer.md | 183 ---- .../javascript/Creating DTS files From JS.md | 88 -- .../copy/pt/javascript/Intro to JS with TS.md | 70 -- .../copy/pt/javascript/JSDoc Reference.md | 697 ------------- .../Type Checking JavaScript Files.md | 310 ------ .../pt/project-config/Configuring Watch.md | 66 -- .../pt/project-config/Project References.md | 217 ----- .../copy/pt/project-config/tsconfig.json.md | 114 --- .../copy/pt/reference/Declaration Merging.md | 331 ------- .../copy/pt/reference/Decorators.md | 573 ----------- .../pt/reference/Iterators and Generators.md | 90 -- .../documentation/copy/pt/reference/JSX.md | 435 --------- .../documentation/copy/pt/reference/Mixins.md | 274 ------ .../copy/pt/reference/Module Resolution.md | 459 --------- .../copy/pt/reference/Modules.md | 920 ------------------ .../pt/reference/Namespaces and Modules.md | 130 --- .../copy/pt/reference/Namespaces.md | 280 ------ .../copy/pt/reference/Symbols.md | 104 -- .../pt/reference/Triple-Slash Directives.md | 140 --- .../copy/pt/reference/Type Compatibility.md | 289 ------ .../copy/pt/reference/Type Inference.md | 130 --- .../copy/pt/reference/Utility Types.md | 367 ------- .../pt/reference/Variable Declarations.md | 706 -------------- .../pt/tutorials/Babel with TypeScript.md | 49 - .../copy/pt/tutorials/DOM Manipulation.md | 200 ---- .../documentation/copy/pt/tutorials/React.md | 26 - .../TypeScript Tooling in 5 minutes.md | 187 ---- .../copy/vo/handbook-v1/Basic Types.md | 19 - .../documentation/copy/zh/Nightly Builds.md | 80 -- .../External APIs/TypeScript with Deno.ts | 34 - .../External APIs/TypeScript with Node.js | 56 -- .../External APIs/TypeScript with Web.js | 80 -- .../Function Chaining.ts | 83 -- .../Generic Functions.ts | 103 -- .../JavaScript Essentials/Hello World.ts | 35 - .../Objects and Arrays.ts | 113 --- .../copy/es/TypeScript/Language/Soundness.ts | 114 --- .../TypeScript/Language/Structural Typing.ts | 89 -- .../es/TypeScript/Language/Type Guards.ts | 91 -- .../Language/Type Widening and Narrowing.ts | 67 -- .../Meta-Types/Conditional Types.ts | 114 --- .../Meta-Types/Discriminate Types.ts | 67 -- .../es/TypeScript/Meta-Types/Indexed Types.ts | 39 - .../es/TypeScript/Meta-Types/Mapped Types.ts | 58 -- .../copy/es/TypeScript/Primitives/Any.ts | 53 - .../copy/es/TypeScript/Primitives/Literals.ts | 68 -- .../Union and Intersection Types.ts | 86 -- .../Primitives/Unknown and Never.ts | 134 --- .../Type Primitives/Built-in Utility Types.ts | 126 --- .../Type Primitives/Nullable Types.ts | 96 -- .../es/TypeScript/Type Primitives/Tuples.ts | 80 -- .../playground-examples/copy/es/sections.json | 54 - .../JavaScript Essentials/Hello World.ts | 28 - .../copy/fa/JavaScript/README.md | 3 - .../playground-examples/copy/fa/sections.json | 54 - .../copy/id/3-7/Fixits/Big number literals.ts | 38 - .../copy/id/3-7/Fixits/Const to let.ts | 13 - .../id/3-7/Fixits/Infer From Usage Changes.ts | 37 - .../Flattened Error Reporting.ts | 66 -- .../Nullish Coalescing.ts | 45 - .../Syntax and Messaging/Optional Chaining.ts | 75 -- .../Assertion Functions.ts | 76 -- .../Recursive Type References.ts | 43 - .../Uncalled Function Checks.ts | 42 - .../Checking Unions with Index Signatures.ts | 35 - .../Accessibility Modifiers.js | 80 -- .../Export Modules From.ts | 27 - .../Private Class Fields.ts | 81 -- .../3-8/Syntax and Messaging/Type Imports.tsx | 58 -- .../New Checks/Class Constructor Code Flow.ts | 19 - .../4-0/New JS Features/JSDoc Deprecated.ts | 22 - .../Logical Operators and Assignment.ts | 48 - .../4-0/New JS Features/Nullish Coalescing.ts | 50 - .../id/4-0/New TS Features/Named Tuples.ts | 55 -- .../4-0/New TS Features/Unknown in Catch.ts | 39 - .../id/4-0/New TS Features/Variadic Tuples.ts | 66 -- .../External APIs/TypeScript with Deno.ts | 34 - .../External APIs/TypeScript with Node.js | 57 -- .../External APIs/TypeScript with React.tsx | 147 --- .../External APIs/TypeScript with Web.js | 90 -- .../External APIs/TypeScript with WebGL.js | 291 ------ .../Function Chaining.ts | 84 -- .../Generic Functions.ts | 120 --- .../Typing Functions.ts | 150 --- .../Helping with JavaScript/Errors.ts | 44 - .../Helping with JavaScript/Quick Fixes.ts | 16 - .../JavaScript Essentials/Code Flow.ts | 67 -- .../JavaScript Essentials/Functions.ts | 92 -- .../JavaScript Essentials/Hello World.ts | 36 - .../Objects and Arrays.ts | 113 --- .../Modern JavaScript/Async Await.ts | 114 --- .../Modern JavaScript/Immutability.ts | 68 -- .../Modern JavaScript/Import Export.ts | 119 --- .../Modern JavaScript/JSDoc Support.js | 103 -- .../playground-examples/copy/id/sections.json | 63 -- .../copy/ja/3-7/Fixits/Big number literals.ts | 34 - .../copy/ja/3-7/Fixits/Const to let.ts | 9 - .../ja/3-7/Fixits/Infer From Usage Changes.ts | 32 - .../Flattened Error Reporting.ts | 64 -- .../Nullish Coalescing.ts | 43 - .../Syntax and Messaging/Optional Chaining.ts | 70 -- .../Assertion Functions.ts | 68 -- .../Recursive Type References.ts | 40 - .../Uncalled Function Checks.ts | 41 - .../Checking Unions with Index Signatures.ts | 33 - .../Accessibility Modifiers.js | 78 -- .../Export Modules From.ts | 24 - .../Private Class Fields.ts | 69 -- .../3-8/Syntax and Messaging/Type Imports.tsx | 50 - .../New Checks/Class Constructor Code Flow.ts | 19 - .../4-0/New JS Features/JSDoc Deprecated.ts | 19 - .../Logical Operators and Assignment.ts | 41 - .../4-0/New JS Features/Nullish Coalescing.ts | 40 - .../ja/4-0/New TS Features/Named Tuples.ts | 49 - .../4-0/New TS Features/Unknown in Catch.ts | 36 - .../ja/4-0/New TS Features/Variadic Tuples.ts | 53 - .../ja/4-1/New JS Features/New JSX Support.ts | 32 - .../ja/4-1/New JS Features/See in JSDoc.ts | 21 - .../Intro to Template Literals.ts | 50 - .../Mapped Types with Template Literals.ts | 54 - ...ing Manipulation with Template Literals.ts | 97 -- .../External APIs/TypeScript with Deno.ts | 32 - .../TypeScript/Language Extensions/Enums.ts | 81 -- .../Language Extensions/Nominal Typing.ts | 66 -- .../Types vs Interfaces.ts | 83 -- .../Meta-Types/Conditional Types.ts | 109 --- .../Meta-Types/Discriminate Types.ts | 66 -- .../ja/TypeScript/Meta-Types/Indexed Types.ts | 37 - .../ja/TypeScript/Meta-Types/Mapped Types.ts | 57 -- .../copy/ja/TypeScript/Primitives/Any.ts | 50 - .../copy/ja/TypeScript/Primitives/Literals.ts | 65 -- .../Union and Intersection Types.ts | 82 -- .../Primitives/Unknown and Never.ts | 128 --- .../Type Primitives/Built-in Utility Types.ts | 121 --- .../Type Primitives/Nullable Types.ts | 85 -- .../ja/TypeScript/Type Primitives/Tuples.ts | 74 -- .../playground-examples/copy/ja/sections.json | 54 - .../copy/ko/3-7/Fixits/Big number literals.ts | 38 - .../copy/ko/3-7/Fixits/Const to let.ts | 12 - .../Nullish Coalescing.ts | 43 - .../Syntax and Messaging/Optional Chaining.ts | 70 -- .../Uncalled Function Checks.ts | 41 - .../Accessibility Modifiers.js | 78 -- .../Export Modules From.ts | 24 - .../Private Class Fields.ts | 69 -- .../3-8/Syntax and Messaging/Type Imports.tsx | 50 - .../New Checks/Class Constructor Code Flow.ts | 19 - .../4-0/New JS Features/JSDoc Deprecated.ts | 19 - .../Logical Operators and Assignment.ts | 41 - .../4-0/New JS Features/Nullish Coalescing.ts | 40 - .../ko/4-0/New TS Features/Named Tuples.ts | 49 - .../4-0/New TS Features/Unknown in Catch.ts | 36 - .../External APIs/TypeScript with Node.js | 52 - .../External APIs/TypeScript with React.tsx | 133 --- .../External APIs/TypeScript with Web.js | 79 -- .../Generic Functions.ts | 100 -- .../JavaScript Essentials/Functions.ts | 89 -- .../JavaScript Essentials/Hello World.ts | 34 - .../Modern JavaScript/Async Await.ts | 109 --- .../Modern JavaScript/Immutability.ts | 57 -- .../Modern JavaScript/Import Export.ts | 109 --- .../Modern JavaScript/JSDoc Support.js | 94 -- .../JavaScript/Working With Classes/This.ts | 91 -- .../Config/JavaScript Playgrounds.js | 36 - .../TypeScript/Language Extensions/Enums.ts | 81 -- .../Types vs Interfaces.ts | 83 -- .../copy/ko/TypeScript/Primitives/Any.ts | 50 - .../copy/ko/TypeScript/Primitives/Literals.ts | 65 -- .../Primitives/Unknown and Never.ts | 128 --- .../playground-examples/copy/ko/sections.json | 63 -- .../copy/pt/3-7/Fixits/Big number literals.ts | 39 - .../copy/pt/3-7/Fixits/Const to let.ts | 12 - .../pt/3-7/Fixits/Infer From Usage Changes.ts | 35 - .../Flattened Error Reporting.ts | 65 -- .../Nullish Coalescing.ts | 42 - .../Syntax and Messaging/Optional Chaining.ts | 71 -- .../Assertion Functions.ts | 70 -- .../Recursive Type References.ts | 39 - .../Uncalled Function Checks.ts | 41 - .../Checking Unions with Index Signatures.ts | 31 - .../Accessibility Modifiers.js | 74 -- .../Export Modules From.ts | 23 - .../Private Class Fields.ts | 70 -- .../3-8/Syntax and Messaging/Type Imports.tsx | 50 - .../New Checks/Class Constructor Code Flow.ts | 21 - .../4-0/New JS Features/JSDoc Deprecated.ts | 21 - .../Logical Operators and Assignment.ts | 43 - .../4-0/New JS Features/Nullish Coalescing.ts | 43 - .../pt/4-0/New TS Features/Named Tuples.ts | 51 - .../4-0/New TS Features/Unknown in Catch.ts | 39 - .../pt/4-0/New TS Features/Variadic Tuples.ts | 55 -- .../pt/4-1/New JS Features/New JSX Support.ts | 32 - .../pt/4-1/New JS Features/See in JSDoc.ts | 21 - .../Intro to Template Literals.ts | 50 - .../Mapped Types with Template Literals.ts | 53 - ...ing Manipulation with Template Literals.ts | 98 -- .../External APIs/TypeScript with Deno.ts | 32 - .../External APIs/TypeScript with Node.js | 54 - .../External APIs/TypeScript with React.tsx | 128 --- .../External APIs/TypeScript with Web.js | 79 -- .../External APIs/TypeScript with WebGL.js | 280 ------ .../Function Chaining.ts | 77 -- .../Generic Functions.ts | 100 -- .../Typing Functions.ts | 137 --- .../Helping with JavaScript/Errors.ts | 39 - .../Helping with JavaScript/Quick Fixes.ts | 15 - .../JavaScript Essentials/Code Flow.ts | 63 -- .../JavaScript Essentials/Functions.ts | 87 -- .../JavaScript Essentials/Hello World.ts | 34 - .../Objects and Arrays.ts | 110 --- .../Modern JavaScript/Async Await.ts | 109 --- .../Modern JavaScript/Immutability.ts | 57 -- .../Modern JavaScript/Import Export.ts | 108 -- .../Modern JavaScript/JSDoc Support.js | 94 -- .../Working With Classes/Classes 101.ts | 55 -- .../Working With Classes/Generic Classes.ts | 95 -- .../JavaScript/Working With Classes/Mixins.ts | 119 --- .../JavaScript/Working With Classes/This.ts | 91 -- .../Config/JavaScript Playgrounds.js | 37 - .../Config/New Compiler Defaults.ts | 55 -- .../Language/Automatic Type Acquisition.ts | 35 - .../copy/pt/Playground/Language/Fixits.ts | 23 - .../pt/Playground/Tooling/Mobile Support.ts | 15 - .../pt/Playground/Tooling/Sharable URLs.ts | 30 - .../Playground/Tooling/TypeScript Versions.ts | 28 - .../TypeScript/Language Extensions/Enums.ts | 81 -- .../Language Extensions/Nominal Typing.ts | 66 -- .../Types vs Interfaces.ts | 82 -- .../copy/pt/TypeScript/Language/Soundness.ts | 116 --- .../TypeScript/Language/Structural Typing.ts | 84 -- .../pt/TypeScript/Language/Type Guards.ts | 91 -- .../Language/Type Widening and Narrowing.ts | 67 -- .../Meta-Types/Conditional Types.ts | 103 -- .../Meta-Types/Discriminate Types.ts | 66 -- .../pt/TypeScript/Meta-Types/Indexed Types.ts | 38 - .../pt/TypeScript/Meta-Types/Mapped Types.ts | 57 -- .../copy/pt/TypeScript/Primitives/Any.ts | 49 - .../copy/pt/TypeScript/Primitives/Literals.ts | 64 -- .../Union and Intersection Types.ts | 82 -- .../Primitives/Unknown and Never.ts | 125 --- .../Type Primitives/Built-in Utility Types.ts | 122 --- .../Type Primitives/Nullable Types.ts | 88 -- .../pt/TypeScript/Type Primitives/Tuples.ts | 75 -- .../playground-examples/copy/pt/sections.json | 54 - .../JavaScript Essentials/Code Flow.ts | 9 - .../JavaScript Essentials/Functions.ts | 10 - .../JavaScript Essentials/Hello World.ts | 11 - .../Objects and Arrays.ts | 110 --- .../playground-examples/copy/vo/sections.json | 24 - .../External APIs/TypeScript with Deno.ts | 31 - .../External APIs/TypeScript with Node.js | 49 - .../External APIs/TypeScript with React.tsx | 121 --- .../External APIs/TypeScript with Web.js | 72 -- .../External APIs/TypeScript with WebGL.js | 277 ------ .../Function Chaining.ts | 73 -- .../Generic Functions.ts | 81 -- .../Typing Functions.ts | 117 --- .../Helping with JavaScript/Errors.ts | 32 - .../Helping with JavaScript/Quick Fixes.ts | 14 - .../JavaScript Essentials/Code Flow.ts | 56 -- .../JavaScript Essentials/Functions.ts | 73 -- .../JavaScript Essentials/Hello World.ts | 28 - .../Objects and Arrays.ts | 89 -- .../Modern JavaScript/Async Await.ts | 107 -- .../Modern JavaScript/Immutability.ts | 48 - .../Modern JavaScript/Import Export.ts | 86 -- .../Modern JavaScript/JSDoc Support.js | 84 -- .../copy/zh/JavaScript/README.md | 5 - .../Working With Classes/Classes 101.ts | 49 - .../Working With Classes/Generic Classes.ts | 89 -- .../JavaScript/Working With Classes/Mixins.ts | 104 -- .../JavaScript/Working With Classes/This.ts | 79 -- .../Config/JavaScript Playgrounds.js | 30 - .../Config/New Compiler Defaults.ts | 51 - .../Language/Automatic Type Acquisition.ts | 25 - .../copy/zh/Playground/Language/Fixits.ts | 18 - .../zh/Playground/Tooling/Mobile Support.ts | 12 - .../zh/Playground/Tooling/Sharable URLs.ts | 23 - .../Playground/Tooling/TypeScript Versions.ts | 24 - .../TypeScript/Language Extensions/Enums.ts | 71 -- .../Language Extensions/Nominal Typing.ts | 54 - .../Types vs Interfaces.ts | 72 -- .../copy/zh/TypeScript/Language/Soundness.ts | 99 -- .../TypeScript/Language/Structural Typing.ts | 74 -- .../zh/TypeScript/Language/Type Guards.ts | 83 -- .../Language/Type Widening and Narrowing.ts | 57 -- .../Meta-Types/Conditional Types.ts | 90 -- .../Meta-Types/Discriminate Types.ts | 55 -- .../zh/TypeScript/Meta-Types/Indexed Types.ts | 32 - .../zh/TypeScript/Meta-Types/Mapped Types.ts | 48 - .../copy/zh/TypeScript/Primitives/Any.ts | 44 - .../copy/zh/TypeScript/Primitives/Literals.ts | 60 -- .../Union and Intersection Types.ts | 75 -- .../Primitives/Unknown and Never.ts | 113 --- .../copy/zh/TypeScript/README.md | 6 - .../Type Primitives/Built-in Utility Types.ts | 108 -- .../Type Primitives/Nullable Types.ts | 74 -- .../zh/TypeScript/Type Primitives/Tuples.ts | 65 -- .../playground-examples/copy/zh/sections.json | 54 - .../es/categories/Additional_Checks_6176.md | 5 - .../es/categories/Advanced_Options_6178.md | 5 - .../copy/es/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 8 - .../Module_Resolution_Options_6174.md | 3 - .../copy/es/categories/Project_Files_0.md | 5 - .../es/categories/Source_Map_Options_6175.md | 7 - .../Strict_Type_Checking_Options_6173.md | 15 - .../copy/es/categories/Watch_Options_999.md | 10 - packages/tsconfig-reference/copy/es/intro.md | 5 - .../copy/es/options/allowJs.md | 39 - .../options/allowSyntheticDefaultImports.md | 21 - .../copy/es/options/allowUmdGlobalAccess.md | 8 - .../copy/es/options/allowUnreachableCode.md | 40 - .../copy/es/options/allowUnusedLabels.md | 19 - .../copy/es/options/alwaysStrict.md | 8 - ...sumeChangesOnlyAffectDirectDependencies.md | 8 - .../copy/es/options/baseUrl.md | 26 - .../copy/es/options/charset.md | 7 - .../copy/es/options/checkJs.md | 40 - .../copy/es/options/composite.md | 16 - .../copy/es/options/declaration.md | 32 - .../copy/es/options/declarationDir.md | 36 - .../copy/es/options/declarationMap.md | 9 - .../copy/es/options/diagnostics.md | 8 - .../copy/es/sections/compilerOptions.md | 3 - .../copy/es/sections/top_level.md | 3 - .../copy/es/sections/watchOptions.md | 0 .../id/categories/Additional_Checks_6176.md | 5 - .../id/categories/Advanced_Options_6178.md | 5 - .../copy/id/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 8 - .../Module_Resolution_Options_6174.md | 3 - .../copy/id/categories/Project_Files_0.md | 5 - .../id/categories/Source_Map_Options_6175.md | 7 - .../Strict_Type_Checking_Options_6173.md | 15 - .../copy/id/categories/Watch_Options_999.md | 10 - packages/tsconfig-reference/copy/id/intro.md | 6 - .../copy/id/options/allowJs.md | 39 - .../options/allowSyntheticDefaultImports.md | 56 -- .../copy/id/options/allowUmdGlobalAccess.md | 8 - .../copy/id/options/allowUnreachableCode.md | 40 - .../copy/id/options/allowUnusedLabels.md | 19 - .../copy/id/options/alwaysStrict.md | 8 - ...sumeChangesOnlyAffectDirectDependencies.md | 8 - .../copy/id/options/baseUrl.md | 26 - .../copy/id/options/charset.md | 7 - .../copy/id/options/checkJs.md | 39 - .../copy/id/options/composite.md | 17 - .../copy/id/options/declaration.md | 32 - .../copy/id/options/declarationDir.md | 36 - .../copy/id/options/declarationMap.md | 9 - .../copy/id/options/diagnostics.md | 8 - .../options/disableReferencedProjectLoad.md | 8 - .../copy/id/options/disableSizeLimit.md | 6 - .../id/options/disableSolutionSearching.md | 8 - ...disableSourceOfProjectReferenceRedirect.md | 7 - .../copy/id/options/downlevelIteration.md | 75 -- .../copy/id/options/emitBOM.md | 8 - .../copy/id/options/emitDeclarationOnly.md | 11 - .../copy/id/options/emitDecoratorMetadata.md | 69 -- .../copy/id/options/esModuleInterop.md | 72 -- .../copy/id/options/exclude.md | 11 - .../copy/id/options/experimentalDecorators.md | 11 - .../copy/id/options/extendedDiagnostics.md | 9 - .../copy/id/options/extends.md | 48 - .../copy/id/options/fallbackPolling.md | 11 - .../copy/id/options/files.md | 26 - .../forceConsistentCasingInFileNames.md | 10 - .../copy/id/options/generateCpuProfile.md | 15 - .../copy/id/options/importHelpers.md | 46 - .../copy/id/options/importsNotUsedAsValues.md | 14 - .../copy/id/options/include.md | 66 -- .../copy/id/options/incremental.md | 8 - .../copy/id/options/inlineSourceMap.md | 34 - .../copy/id/options/inlineSources.md | 35 - .../copy/id/options/isolatedModules.md | 76 -- .../tsconfig-reference/copy/id/options/jsx.md | 11 - .../copy/id/options/jsxFactory.md | 9 - .../copy/id/options/jsxFragmentFactory.md | 54 - .../copy/id/options/noImplicitAny.md | 26 - .../copy/id/options/noImplicitReturns.md | 17 - .../copy/id/options/noImplicitThis.md | 28 - .../copy/id/options/noImplicitUseStrict.md | 23 - .../tsconfig-reference/copy/id/options/out.md | 9 - .../copy/id/options/outDir.md | 39 - .../copy/id/options/outFile.md | 11 - .../copy/id/options/reactNamespace.md | 6 - .../copy/id/options/references.md | 9 - .../copy/id/options/removeComments.md | 33 - .../copy/id/options/resolveJsonModule.md | 44 - .../copy/id/options/rootDir.md | 66 -- .../copy/id/options/rootDirs.md | 31 - .../copy/id/options/skipDefaultLibCheck.md | 6 - .../copy/id/options/skipLibCheck.md | 10 - .../copy/id/options/target.md | 26 - .../copy/id/options/types.md | 39 - .../copy/id/options/watchDirectory.md | 10 - .../copy/id/options/watchFile.md | 12 - .../copy/id/sections/compilerOptions.md | 3 - .../copy/id/sections/top_level.md | 3 - .../copy/id/sections/watchOptions.md | 0 .../ja/categories/Additional_Checks_6176.md | 5 - .../ja/categories/Advanced_Options_6178.md | 5 - .../copy/ja/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 8 - .../Module_Resolution_Options_6174.md | 3 - .../copy/ja/categories/Project_Files_0.md | 5 - .../ja/categories/Source_Map_Options_6175.md | 8 - .../Strict_Type_Checking_Options_6173.md | 15 - .../copy/ja/categories/Watch_Options_999.md | 10 - packages/tsconfig-reference/copy/ja/intro.md | 6 - .../copy/ja/options/allowJs.md | 39 - .../options/allowSyntheticDefaultImports.md | 21 - .../copy/ja/options/allowUmdGlobalAccess.md | 8 - .../copy/ja/options/allowUnreachableCode.md | 35 - .../copy/ja/options/allowUnusedLabels.md | 19 - .../copy/ja/options/alwaysStrict.md | 8 - ...sumeChangesOnlyAffectDirectDependencies.md | 8 - .../copy/ja/options/baseUrl.md | 27 - .../copy/ja/options/charset.md | 7 - .../copy/ja/options/checkJs.md | 40 - .../copy/ja/options/composite.md | 17 - .../copy/ja/options/declaration.md | 32 - .../copy/ja/options/declarationDir.md | 36 - .../copy/ja/options/declarationMap.md | 10 - .../copy/ja/options/diagnostics.md | 8 - .../options/disableReferencedProjectLoad.md | 8 - .../copy/ja/options/disableSizeLimit.md | 6 - .../ja/options/disableSolutionSearching.md | 8 - ...disableSourceOfProjectReferenceRedirect.md | 7 - .../copy/ja/options/downlevelIteration.md | 75 -- .../copy/ja/options/emitBOM.md | 8 - .../copy/ja/options/emitDeclarationOnly.md | 11 - .../copy/ja/options/emitDecoratorMetadata.md | 69 -- .../copy/ja/options/esModuleInterop.md | 44 - .../copy/ja/options/exclude.md | 11 - .../copy/ja/options/experimentalDecorators.md | 12 - .../copy/ja/options/extendedDiagnostics.md | 9 - .../copy/ja/options/extends.md | 45 - .../copy/ja/options/fallbackPolling.md | 11 - .../copy/ja/options/files.md | 26 - .../forceConsistentCasingInFileNames.md | 10 - .../copy/ja/options/generateCpuProfile.md | 15 - .../copy/ja/options/importHelpers.md | 46 - .../copy/ja/options/importsNotUsedAsValues.md | 14 - .../copy/ja/options/include.md | 66 -- .../copy/ja/options/incremental.md | 10 - .../copy/ja/options/inlineSourceMap.md | 35 - .../copy/ja/options/inlineSources.md | 36 - .../copy/ja/options/isolatedModules.md | 76 -- .../tsconfig-reference/copy/ja/options/jsx.md | 11 - .../copy/ja/options/jsxFactory.md | 9 - .../copy/ja/options/jsxFragmentFactory.md | 69 -- .../copy/ja/options/jsxImportSource.md | 95 -- .../copy/ja/options/keyofStringsOnly.md | 8 - .../tsconfig-reference/copy/ja/options/lib.md | 69 -- .../copy/ja/options/listEmittedFiles.md | 42 - .../copy/ja/options/listFiles.md | 37 - .../copy/ja/options/locale.md | 26 - .../copy/ja/options/mapRoot.md | 18 - .../copy/ja/options/maxNodeModuleJsDepth.md | 11 - .../copy/ja/options/module.md | 88 -- .../copy/ja/options/moduleResolution.md | 6 - .../copy/ja/options/newLine.md | 6 - .../copy/ja/options/noEmit.md | 10 - .../copy/ja/options/noEmitHelpers.md | 38 - .../copy/ja/options/noEmitOnError.md | 8 - .../copy/ja/options/noErrorTruncation.md | 40 - .../ja/options/noFallthroughCasesInSwitch.md | 22 - .../copy/ja/options/noImplicitAny.md | 26 - .../copy/ja/options/noImplicitReturns.md | 17 - .../copy/ja/options/noImplicitThis.md | 28 - .../copy/ja/options/noImplicitUseStrict.md | 23 - .../copy/ja/options/noLib.md | 7 - .../copy/ja/options/noResolve.md | 9 - .../copy/ja/options/noStrictGenericChecks.md | 20 - .../ja/options/noUncheckedIndexedAccess.md | 53 - .../copy/ja/options/noUnusedLocals.md | 15 - .../copy/ja/options/noUnusedParameters.md | 15 - .../tsconfig-reference/copy/ja/options/out.md | 9 - .../copy/ja/options/outDir.md | 39 - .../copy/ja/options/outFile.md | 11 - .../copy/ja/options/paths.md | 39 - .../copy/ja/options/plugins.md | 17 - .../copy/ja/options/preserveConstEnums.md | 58 -- .../copy/ja/options/preserveSymlinks.md | 10 - .../copy/ja/options/preserveWatchOutput.md | 6 - .../copy/ja/options/pretty.md | 7 - .../copy/ja/options/reactNamespace.md | 6 - .../copy/ja/options/references.md | 9 - .../copy/ja/options/removeComments.md | 33 - .../copy/ja/options/resolveJsonModule.md | 44 - .../copy/ja/options/rootDir.md | 66 -- .../copy/ja/options/rootDirs.md | 33 - .../copy/ja/options/skipDefaultLibCheck.md | 6 - .../copy/ja/options/skipLibCheck.md | 15 - .../copy/ja/options/sourceMap.md | 39 - .../copy/ja/options/sourceRoot.md | 18 - .../copy/ja/options/strict.md | 11 - .../copy/ja/options/strictBindCallApply.md | 34 - .../copy/ja/options/strictFunctionTypes.md | 55 -- .../copy/ja/options/strictNullChecks.md | 59 -- .../options/strictPropertyInitialization.md | 29 - .../copy/ja/options/stripInternal.md | 60 -- .../options/suppressExcessPropertyErrors.md | 16 - .../options/suppressImplicitAnyIndexErrors.md | 25 - .../copy/ja/options/target.md | 26 - .../copy/ja/options/traceResolution.md | 9 - .../copy/ja/options/tsBuildInfoFile.md | 10 - .../copy/ja/options/typeAcquisition.md | 37 - .../copy/ja/options/typeRoots.md | 21 - .../copy/ja/options/types.md | 23 - .../ja/options/useDefineForClassFields.md | 10 - .../copy/ja/options/watchDirectory.md | 10 - .../copy/ja/options/watchFile.md | 12 - .../copy/ja/sections/compilerOptions.md | 3 - .../copy/ja/sections/top_level.md | 3 - .../copy/ja/sections/watchOptions.md | 0 .../ko/categories/Additional_Checks_6176.md | 5 - .../ko/categories/Advanced_Options_6178.md | 5 - .../copy/ko/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 8 - .../Module_Resolution_Options_6174.md | 3 - .../copy/ko/categories/Project_Files_0.md | 5 - .../ko/categories/Source_Map_Options_6175.md | 8 - .../Strict_Type_Checking_Options_6173.md | 15 - packages/tsconfig-reference/copy/ko/intro.md | 6 - .../copy/ko/options/alwaysStrict.md | 8 - .../copy/ko/options/baseUrl.md | 27 - .../copy/ko/options/charset.md | 7 - .../copy/ko/options/declaration.md | 32 - .../copy/ko/options/exclude.md | 11 - .../copy/ko/options/files.md | 25 - .../copy/ko/options/include.md | 66 -- .../copy/ko/options/jsxFragmentFactory.md | 69 -- .../tsconfig-reference/copy/ko/options/lib.md | 69 -- .../copy/ko/options/locale.md | 25 - .../copy/ko/options/newLine.md | 6 - .../copy/ko/options/noImplicitAny.md | 26 - .../copy/ko/options/paths.md | 39 - .../copy/ko/options/sourceRoot.md | 18 - .../copy/ko/options/strict.md | 11 - .../copy/ko/options/target.md | 18 - .../copy/ko/options/traceResolution.md | 9 - .../pt/categories/Additional_Checks_6176.md | 5 - .../pt/categories/Advanced_Options_6178.md | 5 - .../copy/pt/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 8 - .../Module_Resolution_Options_6174.md | 3 - .../copy/pt/categories/Project_Files_0.md | 5 - .../pt/categories/Source_Map_Options_6175.md | 7 - .../Strict_Type_Checking_Options_6173.md | 15 - .../copy/pt/categories/Watch_Options_999.md | 10 - packages/tsconfig-reference/copy/pt/intro.md | 5 - .../copy/pt/options/allowJs.md | 39 - .../options/allowSyntheticDefaultImports.md | 21 - .../copy/pt/options/allowUmdGlobalAccess.md | 8 - .../copy/pt/options/allowUnreachableCode.md | 41 - .../copy/pt/options/allowUnusedLabels.md | 19 - .../copy/pt/options/alwaysStrict.md | 8 - ...sumeChangesOnlyAffectDirectDependencies.md | 8 - .../copy/pt/options/baseUrl.md | 27 - .../copy/pt/options/charset.md | 7 - .../copy/pt/options/checkJs.md | 40 - .../copy/pt/options/composite.md | 17 - .../copy/pt/options/declaration.md | 32 - .../copy/pt/options/declarationDir.md | 36 - .../copy/pt/options/declarationMap.md | 9 - .../copy/pt/options/diagnostics.md | 8 - .../options/disableReferencedProjectLoad.md | 9 - .../copy/pt/options/disableSizeLimit.md | 6 - .../pt/options/disableSolutionSearching.md | 8 - ...disableSourceOfProjectReferenceRedirect.md | 8 - .../copy/pt/options/downlevelIteration.md | 73 -- .../copy/pt/options/emitBOM.md | 8 - .../copy/pt/options/emitDeclarationOnly.md | 11 - .../copy/pt/options/emitDecoratorMetadata.md | 69 -- .../copy/pt/options/esModuleInterop.md | 42 - .../copy/pt/options/exclude.md | 11 - .../copy/pt/options/experimentalDecorators.md | 11 - .../copy/pt/options/extendedDiagnostics.md | 9 - .../copy/pt/options/extends.md | 48 - .../copy/pt/options/fallbackPolling.md | 11 - .../copy/pt/options/files.md | 26 - .../forceConsistentCasingInFileNames.md | 9 - .../copy/pt/options/generateCpuProfile.md | 15 - .../copy/pt/options/importHelpers.md | 44 - .../copy/pt/options/importsNotUsedAsValues.md | 15 - .../copy/pt/options/include.md | 66 -- .../copy/pt/options/incremental.md | 9 - .../copy/pt/options/inlineSourceMap.md | 34 - .../copy/pt/options/inlineSources.md | 36 - .../copy/pt/options/isolatedModules.md | 75 -- .../tsconfig-reference/copy/pt/options/jsx.md | 11 - .../copy/pt/options/jsxFactory.md | 9 - .../copy/pt/options/jsxFragmentFactory.md | 54 - .../copy/pt/options/jsxImportSource.md | 95 -- .../copy/pt/options/keyofStringsOnly.md | 8 - .../tsconfig-reference/copy/pt/options/lib.md | 69 -- .../copy/pt/options/listEmittedFiles.md | 42 - .../copy/pt/options/listFiles.md | 38 - .../copy/pt/options/locale.md | 26 - .../copy/pt/options/mapRoot.md | 18 - .../copy/pt/options/maxNodeModuleJsDepth.md | 11 - .../copy/pt/options/module.md | 116 --- .../copy/pt/options/moduleResolution.md | 9 - .../copy/pt/options/newLine.md | 6 - .../copy/pt/options/noEmit.md | 10 - .../copy/pt/options/noEmitHelpers.md | 38 - .../copy/pt/options/noEmitOnError.md | 8 - .../copy/pt/options/noErrorTruncation.md | 40 - .../pt/options/noFallthroughCasesInSwitch.md | 22 - .../copy/pt/options/noImplicitAny.md | 26 - .../copy/pt/options/noImplicitReturns.md | 17 - .../copy/pt/options/noImplicitThis.md | 27 - .../copy/pt/options/noImplicitUseStrict.md | 23 - .../copy/pt/options/noLib.md | 7 - .../copy/pt/options/noResolve.md | 9 - .../copy/pt/options/noStrictGenericChecks.md | 20 - .../pt/options/noUncheckedIndexedAccess.md | 53 - .../copy/pt/options/noUnusedLocals.md | 15 - .../copy/pt/options/noUnusedParameters.md | 15 - .../tsconfig-reference/copy/pt/options/out.md | 9 - .../copy/pt/options/outDir.md | 39 - .../copy/pt/options/outFile.md | 11 - .../copy/pt/options/paths.md | 39 - .../copy/pt/options/plugins.md | 17 - .../copy/pt/options/preserveConstEnums.md | 56 -- .../copy/pt/options/preserveSymlinks.md | 10 - .../copy/pt/options/preserveWatchOutput.md | 6 - .../copy/pt/options/pretty.md | 6 - .../copy/pt/options/reactNamespace.md | 7 - .../copy/pt/options/references.md | 9 - .../copy/pt/options/removeComments.md | 34 - .../copy/pt/options/resolveJsonModule.md | 43 - .../copy/pt/options/rootDir.md | 65 -- .../copy/pt/options/rootDirs.md | 32 - .../copy/pt/options/skipDefaultLibCheck.md | 6 - .../copy/pt/options/skipLibCheck.md | 10 - .../copy/pt/options/sourceMap.md | 38 - .../copy/pt/options/sourceRoot.md | 19 - .../copy/pt/options/strict.md | 11 - .../copy/pt/options/strictBindCallApply.md | 34 - .../copy/pt/options/strictFunctionTypes.md | 55 -- .../copy/pt/options/strictNullChecks.md | 56 -- .../options/strictPropertyInitialization.md | 29 - .../copy/pt/options/stripInternal.md | 60 -- .../options/suppressExcessPropertyErrors.md | 16 - .../options/suppressImplicitAnyIndexErrors.md | 25 - .../copy/pt/options/target.md | 26 - .../copy/pt/options/traceResolution.md | 9 - .../copy/pt/options/tsBuildInfoFile.md | 10 - .../copy/pt/options/typeAcquisition.md | 37 - .../copy/pt/options/typeRoots.md | 21 - .../copy/pt/options/types.md | 40 - .../pt/options/useDefineForClassFields.md | 10 - .../copy/pt/options/watchDirectory.md | 10 - .../copy/pt/options/watchFile.md | 12 - .../copy/pt/sections/compilerOptions.md | 3 - .../copy/pt/sections/top_level.md | 3 - .../copy/pt/sections/watchOptions.md | 0 .../copy/vo/categories/Basic_Options_6172.md | 5 - .../copy/vo/categories/Project_Files_0.md | 5 - .../copy/vo/options/files.md | 45 - .../copy/vo/options/noImplicitAny.md | 26 - .../zh/categories/Additional_Checks_6176.md | 5 - .../zh/categories/Advanced_Options_6178.md | 5 - .../copy/zh/categories/Basic_Options_6172.md | 5 - .../categories/Command_line_Options_6171.md | 3 - .../categories/Experimental_Options_6177.md | 7 - .../Module_Resolution_Options_6174.md | 3 - .../copy/zh/categories/Project_Files_0.md | 6 - .../zh/categories/Source_Map_Options_6175.md | 7 - .../Strict_Type_Checking_Options_6173.md | 16 - .../copy/zh/categories/Watch_Options_999.md | 9 - packages/tsconfig-reference/copy/zh/intro.md | 6 - .../copy/zh/options/allowJs.md | 39 - .../options/allowSyntheticDefaultImports.md | 53 - .../copy/zh/options/allowUmdGlobalAccess.md | 9 - .../copy/zh/options/alwaysStrict.md | 9 - .../copy/zh/options/baseUrl.md | 26 - .../copy/zh/options/checkJs.md | 39 - .../copy/zh/options/composite.md | 16 - .../copy/zh/options/declaration.md | 32 - .../copy/zh/options/downlevelIteration.md | 96 -- .../copy/zh/options/esModuleInterop.md | 71 -- .../copy/zh/options/importHelpers.md | 47 - .../copy/zh/options/incremental.md | 10 - .../copy/zh/options/isolatedModules.md | 75 -- .../tsconfig-reference/copy/zh/options/jsx.md | 95 -- .../tsconfig-reference/copy/zh/options/lib.md | 69 -- .../copy/zh/options/module.md | 118 --- .../copy/zh/options/moduleResolution.md | 9 - .../copy/zh/options/noEmit.md | 10 - .../copy/zh/options/noImplicitAny.md | 26 - .../copy/zh/options/noImplicitThis.md | 28 - .../copy/zh/options/outDir.md | 39 - .../copy/zh/options/outFile.md | 11 - .../copy/zh/options/paths.md | 39 - .../copy/zh/options/plugins.md | 18 - .../copy/zh/options/preserveSymlinks.md | 10 - .../copy/zh/options/removeComments.md | 33 - .../copy/zh/options/rootDir.md | 66 -- .../copy/zh/options/rootDirs.md | 30 - .../copy/zh/options/sourceMap.md | 39 - .../copy/zh/options/strict.md | 11 - .../copy/zh/options/strictBindCallApply.md | 35 - .../copy/zh/options/strictFunctionTypes.md | 55 -- .../copy/zh/options/strictNullChecks.md | 58 -- .../options/strictPropertyInitialization.md | 29 - .../copy/zh/options/target.md | 25 - .../copy/zh/options/tsBuildInfoFile.md | 8 - .../copy/zh/options/typeRoots.md | 20 - .../copy/zh/options/types.md | 39 - .../copy/zh/sections/compilerOptions.md | 3 - .../copy/zh/sections/top_level.md | 3 - .../ingestion/createTSConfigReference.ts | 2 + yarn.lock | 110 ++- 758 files changed, 101 insertions(+), 41083 deletions(-) delete mode 100644 .github/CODEOWNERS delete mode 100644 .github/workflows/codeowners-merge.yml delete mode 100644 packages/documentation/copy/id/Nightly Builds.md delete mode 100644 packages/documentation/copy/id/javascript/Creating DTS files From JS.md delete mode 100644 packages/documentation/copy/id/javascript/Intro to JS with TS.md delete mode 100644 packages/documentation/copy/id/javascript/JSDoc Reference.md delete mode 100644 packages/documentation/copy/id/project-config/Configuring Watch.md delete mode 100644 packages/documentation/copy/id/reference/Decorators.md delete mode 100644 packages/documentation/copy/id/reference/Iterators and Generators.md delete mode 100644 packages/documentation/copy/id/reference/JSX.md delete mode 100644 packages/documentation/copy/id/reference/Mixins.md delete mode 100644 packages/documentation/copy/id/reference/Symbols.md delete mode 100644 packages/documentation/copy/id/tutorials/Babel with TypeScript.md delete mode 100755 packages/documentation/copy/id/tutorials/DOM Manipulation.md delete mode 100644 packages/documentation/copy/id/tutorials/React.md delete mode 100644 packages/documentation/copy/id/tutorials/TypeScript Tooling in 5 minutes.md delete mode 100644 packages/documentation/copy/ja/Nightly Builds.md delete mode 100644 packages/documentation/copy/ja/javascript/Creating DTS files From JS.md delete mode 100644 packages/documentation/copy/ja/javascript/Intro to JS with TS.md delete mode 100644 packages/documentation/copy/ja/javascript/JSDoc Reference.md delete mode 100644 packages/documentation/copy/ja/javascript/Type Checking JavaScript Files.md delete mode 100644 packages/documentation/copy/ko/reference/Declaration Merging.md delete mode 100644 packages/documentation/copy/ko/reference/Iterators and Generators.md delete mode 100644 packages/documentation/copy/ko/reference/JSX.md delete mode 100644 packages/documentation/copy/ko/reference/Symbols.md delete mode 100644 packages/documentation/copy/ko/reference/Triple-Slash Directives.md delete mode 100644 packages/documentation/copy/ko/reference/Type Inference.md delete mode 100644 packages/documentation/copy/ko/reference/Utility Types.md delete mode 100644 packages/documentation/copy/ko/tutorials/Babel with TypeScript.md delete mode 100644 packages/documentation/copy/ko/tutorials/React.md delete mode 100644 packages/documentation/copy/ko/tutorials/TypeScript Tooling in 5 minutes.md delete mode 100644 packages/documentation/copy/pl/handbook-v1/The Handbook.md delete mode 100644 packages/documentation/copy/pt/Nightly Builds.md delete mode 100644 packages/documentation/copy/pt/get-started/TS for the New Programmer.md delete mode 100644 packages/documentation/copy/pt/javascript/Creating DTS files From JS.md delete mode 100644 packages/documentation/copy/pt/javascript/Intro to JS with TS.md delete mode 100644 packages/documentation/copy/pt/javascript/JSDoc Reference.md delete mode 100644 packages/documentation/copy/pt/javascript/Type Checking JavaScript Files.md delete mode 100644 packages/documentation/copy/pt/project-config/Configuring Watch.md delete mode 100644 packages/documentation/copy/pt/project-config/Project References.md delete mode 100644 packages/documentation/copy/pt/project-config/tsconfig.json.md delete mode 100644 packages/documentation/copy/pt/reference/Declaration Merging.md delete mode 100644 packages/documentation/copy/pt/reference/Decorators.md delete mode 100644 packages/documentation/copy/pt/reference/Iterators and Generators.md delete mode 100644 packages/documentation/copy/pt/reference/JSX.md delete mode 100644 packages/documentation/copy/pt/reference/Mixins.md delete mode 100644 packages/documentation/copy/pt/reference/Module Resolution.md delete mode 100644 packages/documentation/copy/pt/reference/Modules.md delete mode 100644 packages/documentation/copy/pt/reference/Namespaces and Modules.md delete mode 100644 packages/documentation/copy/pt/reference/Namespaces.md delete mode 100644 packages/documentation/copy/pt/reference/Symbols.md delete mode 100644 packages/documentation/copy/pt/reference/Triple-Slash Directives.md delete mode 100755 packages/documentation/copy/pt/reference/Type Compatibility.md delete mode 100755 packages/documentation/copy/pt/reference/Type Inference.md delete mode 100644 packages/documentation/copy/pt/reference/Utility Types.md delete mode 100644 packages/documentation/copy/pt/reference/Variable Declarations.md delete mode 100644 packages/documentation/copy/pt/tutorials/Babel with TypeScript.md delete mode 100755 packages/documentation/copy/pt/tutorials/DOM Manipulation.md delete mode 100644 packages/documentation/copy/pt/tutorials/React.md delete mode 100644 packages/documentation/copy/pt/tutorials/TypeScript Tooling in 5 minutes.md delete mode 100644 packages/documentation/copy/vo/handbook-v1/Basic Types.md delete mode 100644 packages/documentation/copy/zh/Nightly Builds.md delete mode 100644 packages/playground-examples/copy/es/JavaScript/External APIs/TypeScript with Deno.ts delete mode 100644 packages/playground-examples/copy/es/JavaScript/External APIs/TypeScript with Node.js delete mode 100644 packages/playground-examples/copy/es/JavaScript/External APIs/TypeScript with Web.js delete mode 100644 packages/playground-examples/copy/es/JavaScript/Functions with JavaScript/Function Chaining.ts delete mode 100644 packages/playground-examples/copy/es/JavaScript/Functions with JavaScript/Generic Functions.ts delete mode 100644 packages/playground-examples/copy/es/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/es/JavaScript/JavaScript Essentials/Objects and Arrays.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Language/Soundness.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Language/Structural Typing.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Language/Type Guards.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Language/Type Widening and Narrowing.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Meta-Types/Conditional Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Meta-Types/Discriminate Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Meta-Types/Indexed Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Meta-Types/Mapped Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Primitives/Any.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Primitives/Literals.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Primitives/Union and Intersection Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Primitives/Unknown and Never.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Type Primitives/Built-in Utility Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Type Primitives/Nullable Types.ts delete mode 100644 packages/playground-examples/copy/es/TypeScript/Type Primitives/Tuples.ts delete mode 100644 packages/playground-examples/copy/es/sections.json delete mode 100644 packages/playground-examples/copy/fa/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/fa/JavaScript/README.md delete mode 100644 packages/playground-examples/copy/fa/sections.json delete mode 100644 packages/playground-examples/copy/id/3-7/Fixits/Big number literals.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Fixits/Const to let.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Fixits/Infer From Usage Changes.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Syntax and Messaging/Flattened Error Reporting.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Syntax and Messaging/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Syntax and Messaging/Optional Chaining.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Types and Code Flow/Assertion Functions.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Types and Code Flow/Recursive Type References.ts delete mode 100644 packages/playground-examples/copy/id/3-7/Types and Code Flow/Uncalled Function Checks.ts delete mode 100644 packages/playground-examples/copy/id/3-8/Breaking Changes/Checking Unions with Index Signatures.ts delete mode 100644 packages/playground-examples/copy/id/3-8/JSDoc Improvements/Accessibility Modifiers.js delete mode 100644 packages/playground-examples/copy/id/3-8/Syntax and Messaging/Export Modules From.ts delete mode 100644 packages/playground-examples/copy/id/3-8/Syntax and Messaging/Private Class Fields.ts delete mode 100644 packages/playground-examples/copy/id/3-8/Syntax and Messaging/Type Imports.tsx delete mode 100644 packages/playground-examples/copy/id/4-0/New Checks/Class Constructor Code Flow.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New JS Features/JSDoc Deprecated.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New JS Features/Logical Operators and Assignment.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New JS Features/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New TS Features/Named Tuples.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New TS Features/Unknown in Catch.ts delete mode 100644 packages/playground-examples/copy/id/4-0/New TS Features/Variadic Tuples.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Deno.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Node.js delete mode 100644 packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with React.tsx delete mode 100644 packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Web.js delete mode 100644 packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with WebGL.js delete mode 100644 packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Function Chaining.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Generic Functions.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Typing Functions.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Errors.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Quick Fixes.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Code Flow.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Functions.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Objects and Arrays.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Async Await.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Immutability.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Import Export.ts delete mode 100644 packages/playground-examples/copy/id/JavaScript/Modern JavaScript/JSDoc Support.js delete mode 100644 packages/playground-examples/copy/id/sections.json delete mode 100644 packages/playground-examples/copy/ja/3-7/Fixits/Big number literals.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Fixits/Const to let.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Fixits/Infer From Usage Changes.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Flattened Error Reporting.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Optional Chaining.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Types and Code Flow/Assertion Functions.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Types and Code Flow/Recursive Type References.ts delete mode 100644 packages/playground-examples/copy/ja/3-7/Types and Code Flow/Uncalled Function Checks.ts delete mode 100644 packages/playground-examples/copy/ja/3-8/Breaking Changes/Checking Unions with Index Signatures.ts delete mode 100644 packages/playground-examples/copy/ja/3-8/JSDoc Improvements/Accessibility Modifiers.js delete mode 100644 packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Export Modules From.ts delete mode 100644 packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Private Class Fields.ts delete mode 100644 packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Type Imports.tsx delete mode 100644 packages/playground-examples/copy/ja/4-0/New Checks/Class Constructor Code Flow.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New JS Features/JSDoc Deprecated.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New JS Features/Logical Operators and Assignment.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New JS Features/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New TS Features/Named Tuples.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New TS Features/Unknown in Catch.ts delete mode 100644 packages/playground-examples/copy/ja/4-0/New TS Features/Variadic Tuples.ts delete mode 100644 packages/playground-examples/copy/ja/4-1/New JS Features/New JSX Support.ts delete mode 100644 packages/playground-examples/copy/ja/4-1/New JS Features/See in JSDoc.ts delete mode 100644 packages/playground-examples/copy/ja/4-1/Template Literals/Intro to Template Literals.ts delete mode 100644 packages/playground-examples/copy/ja/4-1/Template Literals/Mapped Types with Template Literals.ts delete mode 100644 packages/playground-examples/copy/ja/4-1/Template Literals/String Manipulation with Template Literals.ts delete mode 100644 packages/playground-examples/copy/ja/JavaScript/External APIs/TypeScript with Deno.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Language Extensions/Enums.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Language Extensions/Nominal Typing.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Language Extensions/Types vs Interfaces.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Meta-Types/Conditional Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Meta-Types/Discriminate Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Meta-Types/Indexed Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Meta-Types/Mapped Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Primitives/Any.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Primitives/Union and Intersection Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Primitives/Unknown and Never.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Type Primitives/Built-in Utility Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Type Primitives/Nullable Types.ts delete mode 100644 packages/playground-examples/copy/ja/TypeScript/Type Primitives/Tuples.ts delete mode 100644 packages/playground-examples/copy/ja/sections.json delete mode 100644 packages/playground-examples/copy/ko/3-7/Fixits/Big number literals.ts delete mode 100644 packages/playground-examples/copy/ko/3-7/Fixits/Const to let.ts delete mode 100644 packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Optional Chaining.ts delete mode 100644 packages/playground-examples/copy/ko/3-7/Types and Code Flow/Uncalled Function Checks.ts delete mode 100644 packages/playground-examples/copy/ko/3-8/JSDoc Improvements/Accessibility Modifiers.js delete mode 100644 packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Export Modules From.ts delete mode 100644 packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Private Class Fields.ts delete mode 100644 packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Type Imports.tsx delete mode 100644 packages/playground-examples/copy/ko/4-0/New Checks/Class Constructor Code Flow.ts delete mode 100644 packages/playground-examples/copy/ko/4-0/New JS Features/JSDoc Deprecated.ts delete mode 100644 packages/playground-examples/copy/ko/4-0/New JS Features/Logical Operators and Assignment.ts delete mode 100644 packages/playground-examples/copy/ko/4-0/New JS Features/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/ko/4-0/New TS Features/Named Tuples.ts delete mode 100644 packages/playground-examples/copy/ko/4-0/New TS Features/Unknown in Catch.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Node.js delete mode 100644 packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with React.tsx delete mode 100644 packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Web.js delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Functions with JavaScript/Generic Functions.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Functions.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Async Await.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Immutability.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Import Export.ts delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/JSDoc Support.js delete mode 100644 packages/playground-examples/copy/ko/JavaScript/Working With Classes/This.ts delete mode 100644 packages/playground-examples/copy/ko/Playground/Config/JavaScript Playgrounds.js delete mode 100644 packages/playground-examples/copy/ko/TypeScript/Language Extensions/Enums.ts delete mode 100644 packages/playground-examples/copy/ko/TypeScript/Language Extensions/Types vs Interfaces.ts delete mode 100644 packages/playground-examples/copy/ko/TypeScript/Primitives/Any.ts delete mode 100644 packages/playground-examples/copy/ko/TypeScript/Primitives/Literals.ts delete mode 100644 packages/playground-examples/copy/ko/TypeScript/Primitives/Unknown and Never.ts delete mode 100644 packages/playground-examples/copy/ko/sections.json delete mode 100644 packages/playground-examples/copy/pt/3-7/Fixits/Big number literals.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Fixits/Const to let.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Fixits/Infer From Usage Changes.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Flattened Error Reporting.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Optional Chaining.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Types and Code Flow/Assertion Functions.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Types and Code Flow/Recursive Type References.ts delete mode 100644 packages/playground-examples/copy/pt/3-7/Types and Code Flow/Uncalled Function Checks.ts delete mode 100644 packages/playground-examples/copy/pt/3-8/Breaking Changes/Checking Unions with Index Signatures.ts delete mode 100644 packages/playground-examples/copy/pt/3-8/JSDoc Improvements/Accessibility Modifiers.js delete mode 100644 packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Export Modules From.ts delete mode 100644 packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Private Class Fields.ts delete mode 100644 packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Type Imports.tsx delete mode 100644 packages/playground-examples/copy/pt/4-0/New Checks/Class Constructor Code Flow.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New JS Features/JSDoc Deprecated.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New JS Features/Logical Operators and Assignment.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New JS Features/Nullish Coalescing.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New TS Features/Named Tuples.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New TS Features/Unknown in Catch.ts delete mode 100644 packages/playground-examples/copy/pt/4-0/New TS Features/Variadic Tuples.ts delete mode 100644 packages/playground-examples/copy/pt/4-1/New JS Features/New JSX Support.ts delete mode 100644 packages/playground-examples/copy/pt/4-1/New JS Features/See in JSDoc.ts delete mode 100644 packages/playground-examples/copy/pt/4-1/Template Literals/Intro to Template Literals.ts delete mode 100644 packages/playground-examples/copy/pt/4-1/Template Literals/Mapped Types with Template Literals.ts delete mode 100644 packages/playground-examples/copy/pt/4-1/Template Literals/String Manipulation with Template Literals.ts delete mode 100755 packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Deno.ts delete mode 100755 packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Node.js delete mode 100755 packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with React.tsx delete mode 100755 packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Web.js delete mode 100755 packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with WebGL.js delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Function Chaining.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Generic Functions.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Typing Functions.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Errors.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Quick Fixes.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Code Flow.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Functions.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Objects and Arrays.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Async Await.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Immutability.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Import Export.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/JSDoc Support.js delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Working With Classes/Classes 101.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Working With Classes/Generic Classes.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Working With Classes/Mixins.ts delete mode 100644 packages/playground-examples/copy/pt/JavaScript/Working With Classes/This.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Config/JavaScript Playgrounds.js delete mode 100644 packages/playground-examples/copy/pt/Playground/Config/New Compiler Defaults.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Language/Automatic Type Acquisition.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Language/Fixits.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Tooling/Mobile Support.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Tooling/Sharable URLs.ts delete mode 100644 packages/playground-examples/copy/pt/Playground/Tooling/TypeScript Versions.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language Extensions/Enums.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language Extensions/Nominal Typing.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language Extensions/Types vs Interfaces.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language/Soundness.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language/Structural Typing.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language/Type Guards.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Language/Type Widening and Narrowing.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Meta-Types/Conditional Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Meta-Types/Discriminate Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Meta-Types/Indexed Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Meta-Types/Mapped Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Primitives/Any.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Primitives/Literals.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Primitives/Union and Intersection Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Primitives/Unknown and Never.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Type Primitives/Built-in Utility Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Type Primitives/Nullable Types.ts delete mode 100644 packages/playground-examples/copy/pt/TypeScript/Type Primitives/Tuples.ts delete mode 100644 packages/playground-examples/copy/pt/sections.json delete mode 100644 packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Code Flow.ts delete mode 100644 packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Functions.ts delete mode 100644 packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Objects and Arrays.ts delete mode 100644 packages/playground-examples/copy/vo/sections.json delete mode 100644 packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Deno.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Node.js delete mode 100644 packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with React.tsx delete mode 100644 packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Web.js delete mode 100644 packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with WebGL.js delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Function Chaining.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Generic Functions.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Typing Functions.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Errors.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Quick Fixes.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Code Flow.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Functions.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Hello World.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Objects and Arrays.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Async Await.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Immutability.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Import Export.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/JSDoc Support.js delete mode 100644 packages/playground-examples/copy/zh/JavaScript/README.md delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Working With Classes/Classes 101.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Working With Classes/Generic Classes.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Working With Classes/Mixins.ts delete mode 100644 packages/playground-examples/copy/zh/JavaScript/Working With Classes/This.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Config/JavaScript Playgrounds.js delete mode 100644 packages/playground-examples/copy/zh/Playground/Config/New Compiler Defaults.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Language/Automatic Type Acquisition.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Language/Fixits.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Tooling/Mobile Support.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Tooling/Sharable URLs.ts delete mode 100644 packages/playground-examples/copy/zh/Playground/Tooling/TypeScript Versions.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language Extensions/Enums.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language Extensions/Nominal Typing.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language Extensions/Types vs Interfaces.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language/Soundness.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language/Structural Typing.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language/Type Guards.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Language/Type Widening and Narrowing.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Meta-Types/Conditional Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Meta-Types/Discriminate Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Meta-Types/Indexed Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Meta-Types/Mapped Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Primitives/Any.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Primitives/Literals.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Primitives/Union and Intersection Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Primitives/Unknown and Never.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/README.md delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Type Primitives/Built-in Utility Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Type Primitives/Nullable Types.ts delete mode 100644 packages/playground-examples/copy/zh/TypeScript/Type Primitives/Tuples.ts delete mode 100644 packages/playground-examples/copy/zh/sections.json delete mode 100644 packages/tsconfig-reference/copy/es/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/es/categories/Watch_Options_999.md delete mode 100644 packages/tsconfig-reference/copy/es/intro.md delete mode 100644 packages/tsconfig-reference/copy/es/options/allowJs.md delete mode 100644 packages/tsconfig-reference/copy/es/options/allowSyntheticDefaultImports.md delete mode 100644 packages/tsconfig-reference/copy/es/options/allowUmdGlobalAccess.md delete mode 100644 packages/tsconfig-reference/copy/es/options/allowUnreachableCode.md delete mode 100644 packages/tsconfig-reference/copy/es/options/allowUnusedLabels.md delete mode 100644 packages/tsconfig-reference/copy/es/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/es/options/assumeChangesOnlyAffectDirectDependencies.md delete mode 100644 packages/tsconfig-reference/copy/es/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/es/options/charset.md delete mode 100644 packages/tsconfig-reference/copy/es/options/checkJs.md delete mode 100644 packages/tsconfig-reference/copy/es/options/composite.md delete mode 100644 packages/tsconfig-reference/copy/es/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/es/options/declarationDir.md delete mode 100644 packages/tsconfig-reference/copy/es/options/declarationMap.md delete mode 100644 packages/tsconfig-reference/copy/es/options/diagnostics.md delete mode 100644 packages/tsconfig-reference/copy/es/sections/compilerOptions.md delete mode 100644 packages/tsconfig-reference/copy/es/sections/top_level.md delete mode 100644 packages/tsconfig-reference/copy/es/sections/watchOptions.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/id/categories/Watch_Options_999.md delete mode 100644 packages/tsconfig-reference/copy/id/intro.md delete mode 100644 packages/tsconfig-reference/copy/id/options/allowJs.md delete mode 100644 packages/tsconfig-reference/copy/id/options/allowSyntheticDefaultImports.md delete mode 100644 packages/tsconfig-reference/copy/id/options/allowUmdGlobalAccess.md delete mode 100644 packages/tsconfig-reference/copy/id/options/allowUnreachableCode.md delete mode 100644 packages/tsconfig-reference/copy/id/options/allowUnusedLabels.md delete mode 100644 packages/tsconfig-reference/copy/id/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/id/options/assumeChangesOnlyAffectDirectDependencies.md delete mode 100644 packages/tsconfig-reference/copy/id/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/id/options/charset.md delete mode 100644 packages/tsconfig-reference/copy/id/options/checkJs.md delete mode 100644 packages/tsconfig-reference/copy/id/options/composite.md delete mode 100644 packages/tsconfig-reference/copy/id/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/id/options/declarationDir.md delete mode 100644 packages/tsconfig-reference/copy/id/options/declarationMap.md delete mode 100644 packages/tsconfig-reference/copy/id/options/diagnostics.md delete mode 100644 packages/tsconfig-reference/copy/id/options/disableReferencedProjectLoad.md delete mode 100644 packages/tsconfig-reference/copy/id/options/disableSizeLimit.md delete mode 100644 packages/tsconfig-reference/copy/id/options/disableSolutionSearching.md delete mode 100644 packages/tsconfig-reference/copy/id/options/disableSourceOfProjectReferenceRedirect.md delete mode 100644 packages/tsconfig-reference/copy/id/options/downlevelIteration.md delete mode 100644 packages/tsconfig-reference/copy/id/options/emitBOM.md delete mode 100644 packages/tsconfig-reference/copy/id/options/emitDeclarationOnly.md delete mode 100644 packages/tsconfig-reference/copy/id/options/emitDecoratorMetadata.md delete mode 100644 packages/tsconfig-reference/copy/id/options/esModuleInterop.md delete mode 100644 packages/tsconfig-reference/copy/id/options/exclude.md delete mode 100644 packages/tsconfig-reference/copy/id/options/experimentalDecorators.md delete mode 100644 packages/tsconfig-reference/copy/id/options/extendedDiagnostics.md delete mode 100644 packages/tsconfig-reference/copy/id/options/extends.md delete mode 100644 packages/tsconfig-reference/copy/id/options/fallbackPolling.md delete mode 100644 packages/tsconfig-reference/copy/id/options/files.md delete mode 100644 packages/tsconfig-reference/copy/id/options/forceConsistentCasingInFileNames.md delete mode 100644 packages/tsconfig-reference/copy/id/options/generateCpuProfile.md delete mode 100644 packages/tsconfig-reference/copy/id/options/importHelpers.md delete mode 100644 packages/tsconfig-reference/copy/id/options/importsNotUsedAsValues.md delete mode 100644 packages/tsconfig-reference/copy/id/options/include.md delete mode 100644 packages/tsconfig-reference/copy/id/options/incremental.md delete mode 100644 packages/tsconfig-reference/copy/id/options/inlineSourceMap.md delete mode 100644 packages/tsconfig-reference/copy/id/options/inlineSources.md delete mode 100644 packages/tsconfig-reference/copy/id/options/isolatedModules.md delete mode 100644 packages/tsconfig-reference/copy/id/options/jsx.md delete mode 100644 packages/tsconfig-reference/copy/id/options/jsxFactory.md delete mode 100644 packages/tsconfig-reference/copy/id/options/jsxFragmentFactory.md delete mode 100644 packages/tsconfig-reference/copy/id/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/id/options/noImplicitReturns.md delete mode 100644 packages/tsconfig-reference/copy/id/options/noImplicitThis.md delete mode 100644 packages/tsconfig-reference/copy/id/options/noImplicitUseStrict.md delete mode 100644 packages/tsconfig-reference/copy/id/options/out.md delete mode 100644 packages/tsconfig-reference/copy/id/options/outDir.md delete mode 100644 packages/tsconfig-reference/copy/id/options/outFile.md delete mode 100644 packages/tsconfig-reference/copy/id/options/reactNamespace.md delete mode 100644 packages/tsconfig-reference/copy/id/options/references.md delete mode 100644 packages/tsconfig-reference/copy/id/options/removeComments.md delete mode 100644 packages/tsconfig-reference/copy/id/options/resolveJsonModule.md delete mode 100644 packages/tsconfig-reference/copy/id/options/rootDir.md delete mode 100644 packages/tsconfig-reference/copy/id/options/rootDirs.md delete mode 100644 packages/tsconfig-reference/copy/id/options/skipDefaultLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/id/options/skipLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/id/options/target.md delete mode 100644 packages/tsconfig-reference/copy/id/options/types.md delete mode 100644 packages/tsconfig-reference/copy/id/options/watchDirectory.md delete mode 100644 packages/tsconfig-reference/copy/id/options/watchFile.md delete mode 100644 packages/tsconfig-reference/copy/id/sections/compilerOptions.md delete mode 100644 packages/tsconfig-reference/copy/id/sections/top_level.md delete mode 100644 packages/tsconfig-reference/copy/id/sections/watchOptions.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/ja/categories/Watch_Options_999.md delete mode 100644 packages/tsconfig-reference/copy/ja/intro.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/allowJs.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/allowSyntheticDefaultImports.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/allowUmdGlobalAccess.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/allowUnreachableCode.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/allowUnusedLabels.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/assumeChangesOnlyAffectDirectDependencies.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/charset.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/checkJs.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/composite.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/declarationDir.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/declarationMap.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/diagnostics.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/disableReferencedProjectLoad.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/disableSizeLimit.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/disableSolutionSearching.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/disableSourceOfProjectReferenceRedirect.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/downlevelIteration.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/emitBOM.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/emitDeclarationOnly.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/emitDecoratorMetadata.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/esModuleInterop.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/exclude.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/experimentalDecorators.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/extendedDiagnostics.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/extends.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/fallbackPolling.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/files.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/forceConsistentCasingInFileNames.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/generateCpuProfile.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/importHelpers.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/importsNotUsedAsValues.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/include.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/incremental.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/inlineSourceMap.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/inlineSources.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/isolatedModules.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/jsx.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/jsxFactory.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/jsxFragmentFactory.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/jsxImportSource.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/keyofStringsOnly.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/lib.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/listEmittedFiles.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/listFiles.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/locale.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/mapRoot.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/maxNodeModuleJsDepth.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/module.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/moduleResolution.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/newLine.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noEmit.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noEmitHelpers.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noEmitOnError.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noErrorTruncation.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noFallthroughCasesInSwitch.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noImplicitReturns.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noImplicitThis.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noImplicitUseStrict.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noLib.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noResolve.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noStrictGenericChecks.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noUncheckedIndexedAccess.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noUnusedLocals.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/noUnusedParameters.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/out.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/outDir.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/outFile.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/paths.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/plugins.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/preserveConstEnums.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/preserveSymlinks.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/preserveWatchOutput.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/pretty.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/reactNamespace.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/references.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/removeComments.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/resolveJsonModule.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/rootDir.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/rootDirs.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/skipDefaultLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/skipLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/sourceMap.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/sourceRoot.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/strict.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/strictBindCallApply.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/strictFunctionTypes.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/strictNullChecks.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/strictPropertyInitialization.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/stripInternal.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/suppressExcessPropertyErrors.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/suppressImplicitAnyIndexErrors.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/target.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/traceResolution.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/tsBuildInfoFile.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/typeAcquisition.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/typeRoots.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/types.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/useDefineForClassFields.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/watchDirectory.md delete mode 100644 packages/tsconfig-reference/copy/ja/options/watchFile.md delete mode 100644 packages/tsconfig-reference/copy/ja/sections/compilerOptions.md delete mode 100644 packages/tsconfig-reference/copy/ja/sections/top_level.md delete mode 100644 packages/tsconfig-reference/copy/ja/sections/watchOptions.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/ko/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/ko/intro.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/charset.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/exclude.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/files.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/include.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/jsxFragmentFactory.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/lib.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/locale.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/newLine.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/paths.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/sourceRoot.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/strict.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/target.md delete mode 100644 packages/tsconfig-reference/copy/ko/options/traceResolution.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/pt/categories/Watch_Options_999.md delete mode 100644 packages/tsconfig-reference/copy/pt/intro.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/allowJs.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/allowSyntheticDefaultImports.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/allowUmdGlobalAccess.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/allowUnreachableCode.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/allowUnusedLabels.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/assumeChangesOnlyAffectDirectDependencies.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/charset.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/checkJs.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/composite.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/declarationDir.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/declarationMap.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/diagnostics.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/disableReferencedProjectLoad.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/disableSizeLimit.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/disableSolutionSearching.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/disableSourceOfProjectReferenceRedirect.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/downlevelIteration.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/emitBOM.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/emitDeclarationOnly.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/emitDecoratorMetadata.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/esModuleInterop.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/exclude.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/experimentalDecorators.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/extendedDiagnostics.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/extends.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/fallbackPolling.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/files.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/forceConsistentCasingInFileNames.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/generateCpuProfile.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/importHelpers.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/importsNotUsedAsValues.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/include.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/incremental.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/inlineSourceMap.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/inlineSources.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/isolatedModules.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/jsx.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/jsxFactory.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/jsxFragmentFactory.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/jsxImportSource.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/keyofStringsOnly.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/lib.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/listEmittedFiles.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/listFiles.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/locale.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/mapRoot.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/maxNodeModuleJsDepth.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/module.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/moduleResolution.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/newLine.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noEmit.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noEmitHelpers.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noEmitOnError.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noErrorTruncation.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noFallthroughCasesInSwitch.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noImplicitReturns.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noImplicitThis.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noImplicitUseStrict.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noLib.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noResolve.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noStrictGenericChecks.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noUncheckedIndexedAccess.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noUnusedLocals.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/noUnusedParameters.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/out.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/outDir.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/outFile.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/paths.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/plugins.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/preserveConstEnums.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/preserveSymlinks.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/preserveWatchOutput.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/pretty.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/reactNamespace.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/references.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/removeComments.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/resolveJsonModule.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/rootDir.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/rootDirs.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/skipDefaultLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/skipLibCheck.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/sourceMap.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/sourceRoot.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/strict.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/strictBindCallApply.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/strictFunctionTypes.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/strictNullChecks.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/strictPropertyInitialization.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/stripInternal.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/suppressExcessPropertyErrors.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/suppressImplicitAnyIndexErrors.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/target.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/traceResolution.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/tsBuildInfoFile.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/typeAcquisition.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/typeRoots.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/types.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/useDefineForClassFields.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/watchDirectory.md delete mode 100644 packages/tsconfig-reference/copy/pt/options/watchFile.md delete mode 100644 packages/tsconfig-reference/copy/pt/sections/compilerOptions.md delete mode 100644 packages/tsconfig-reference/copy/pt/sections/top_level.md delete mode 100644 packages/tsconfig-reference/copy/pt/sections/watchOptions.md delete mode 100644 packages/tsconfig-reference/copy/vo/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/vo/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/vo/options/files.md delete mode 100644 packages/tsconfig-reference/copy/vo/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Additional_Checks_6176.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Advanced_Options_6178.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Basic_Options_6172.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Command_line_Options_6171.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Experimental_Options_6177.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Module_Resolution_Options_6174.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Project_Files_0.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Source_Map_Options_6175.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Strict_Type_Checking_Options_6173.md delete mode 100644 packages/tsconfig-reference/copy/zh/categories/Watch_Options_999.md delete mode 100644 packages/tsconfig-reference/copy/zh/intro.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/allowJs.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/allowSyntheticDefaultImports.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/allowUmdGlobalAccess.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/alwaysStrict.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/baseUrl.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/checkJs.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/composite.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/declaration.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/downlevelIteration.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/esModuleInterop.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/importHelpers.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/incremental.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/isolatedModules.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/jsx.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/lib.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/module.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/moduleResolution.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/noEmit.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/noImplicitAny.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/noImplicitThis.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/outDir.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/outFile.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/paths.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/plugins.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/preserveSymlinks.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/removeComments.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/rootDir.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/rootDirs.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/sourceMap.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/strict.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/strictBindCallApply.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/strictFunctionTypes.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/strictNullChecks.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/strictPropertyInitialization.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/target.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/tsBuildInfoFile.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/typeRoots.md delete mode 100644 packages/tsconfig-reference/copy/zh/options/types.md delete mode 100644 packages/tsconfig-reference/copy/zh/sections/compilerOptions.md delete mode 100644 packages/tsconfig-reference/copy/zh/sections/top_level.md diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index d8b40172a61c..000000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,57 +0,0 @@ -# See https://github.com/orta/code-owner-self-merge - -# Collaborators for Japanese Translation of the Website -packages/playground-examples/copy/ja @sasurau4 @Quramy @Naturalclar @Takepepe [translation] [jp] -packages/tsconfig-reference/copy/ja/**/*.md @sasurau4 @Quramy @Naturalclar @Takepepe [translation] [jp] -packages/typescriptlang-org/src/copy/ja/**/*.ts @sasurau4 @Quramy @Naturalclar @Takepepe [translation] [jp] -packages/typescriptlang-org/src/copy/ja.ts @sasurau4 @Quramy @Naturalclar @Takepepe [translation] [jp] -packages/documentation/copy/ja/**/*.md @sasurau4 @Quramy @Naturalclar @Takepepe [translation] [jp] - -# Collaborators for Portuguese Translation of the Website -packages/playground-examples/copy/pt @khaosdoctor @danilofuchs [translation] [pt] -packages/tsconfig-reference/copy/pt/**/*.md @khaosdoctor @danilofuchs [translation] [pt] -packages/typescriptlang-org/src/copy/pt/**/*.ts @khaosdoctor @danilofuchs [translation] [pt] -packages/typescriptlang-org/src/copy/pt.ts @khaosdoctor @danilofuchs [translation] [pt] -packages/documentation/copy/pt/**/*.md @khaosdoctor @danilofuchs [translation] [pt] - -# Collaborators for Spanish Translation of the Website -packages/playground-examples/copy/es @KingDarBoja [translation] [es] -packages/tsconfig-reference/copy/es/**/*.md @KingDarBoja [translation] [es] -packages/typescriptlang-org/src/copy/es/**/*.ts @KingDarBoja [translation] [es] -packages/typescriptlang-org/src/copy/es.ts @KingDarBoja [translation] [es] -packages/documentation/copy/es/**/*.md @KingDarBoja [translation] [es] - -# Collaborators for Chinese Translation of the Website -packages/playground-examples/copy/zh @Kingwl [translation] [zh] -packages/tsconfig-reference/copy/zh/**/*.md @Kingwl [translation] [zh] -packages/typescriptlang-org/src/copy/zh/**/*.ts @Kingwl [translation] [zh] -packages/typescriptlang-org/src/copy/zh.ts @Kingwl [translation] [zh] -packages/documentation/copy/zh/**/*.md @Kingwl [translation] [zh] - -# Collaborators for Korean Translation of the Website -packages/playground-examples/copy/ko @Bumkeyy [translation] [ko] -packages/tsconfig-reference/copy/ko/**/*.md @Bumkeyy [translation] [ko] -packages/typescriptlang-org/src/copy/ko/**/*.ts @Bumkeyy [translation] [ko] -packages/typescriptlang-org/src/copy/ko.ts @Bumkeyy [translation] [ko] -packages/documentation/copy/ko/**/*.md @Bumkeyy [translation] [ko] - -# Collaborators for Indonesian Translation of the Website -packages/playground-examples/copy/id @jefrydco @nusendra @mazipan @mandaputtra [translation] [id] -packages/tsconfig-reference/copy/id/**/*.md @jefrydco @nusendra @mazipan @mandaputtra [translation] [id] -packages/typescriptlang-org/src/copy/id/**/*.ts @jefrydco @nusendra @mazipan @mandaputtra [translation] [id] -packages/typescriptlang-org/src/copy/id.ts @jefrydco @nusendra @mazipan @mandaputtra [translation] [id] -packages/documentation/copy/id/**/*.md @jefrydco @nusendra @mazipan @mandaputtra [translation] [id] - -# Collaborators for Ukrainian Translation of the Website -packages/playground-examples/copy/uk @AMashoshyna [translation] [uk] -packages/tsconfig-reference/copy/uk/**/*.md @AMashoshyna [translation] [uk] -packages/typescriptlang-org/src/copy/uk/**/*.ts @AMashoshyna [translation] [uk] -packages/typescriptlang-org/src/copy/uk.ts @AMashoshyna [translation] [uk] -packages/documentation/copy/uk/**/*.md @AMashoshyna [translation] [uk] - -# Collaborators for Polish Translation of the Website -packages/playground-examples/copy/pl @msieroslawska @TomWebwalker [translation] [pl] -packages/tsconfig-reference/copy/pl/**/*.md @msieroslawska @TomWebwalker [translation] [pl] -packages/typescriptlang-org/src/copy/pl/**/*.ts @msieroslawska @TomWebwalker [translation] [pl] -packages/typescriptlang-org/src/copy/pl.ts @msieroslawska @TomWebwalker [translation] [pl] -packages/documentation/copy/pl/**/*.md @msieroslawska @TomWebwalker [translation] [pl] diff --git a/.github/workflows/codeowners-merge.yml b/.github/workflows/codeowners-merge.yml deleted file mode 100644 index 90f9a27d8bcc..000000000000 --- a/.github/workflows/codeowners-merge.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Codeowners merging -on: - pull_request_target: { types: opened } - issue_comment: { types: created } - pull_request_review: { types: submitted } - -jobs: - build: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v1 - - name: Run Codeowners merge check - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - uses: orta/code-owner-self-merge@master diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml index 08d2ae4abdb8..f9d149a6cae9 100644 --- a/.github/workflows/deploy-prod.yml +++ b/.github/workflows/deploy-prod.yml @@ -44,11 +44,6 @@ jobs: APP_INSIGHTS_API_KEY: ${{ secrets.APP_INSIGHTS_API_KEY }} APP_INSIGHTS_ID: ${{ secrets.APP_INSIGHTS_ID }} - # Update all the translation issues on a nightly basis - - run: node packages/typescriptlang-org/scripts/updateGitHubTranslationIssues.ts - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_BOT_TOKEN }} - - name: Send a message to Microsoft Teams if: ${{ failure() }} uses: aliencube/microsoft-teams-actions@v0.8.0 diff --git a/package.json b/package.json index 5b7395b3299f..6f8e96db27ad 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,7 @@ "update-test-snapshots": "CI=true yarn workspaces foreach --include gatsby-remark-shiki-twoslash --include @typescript/twoslash --include shiki-twoslash --include @typescript/vfs run test -u" }, "dependencies": { + "@oss-docs/sync": "^1.0.0", "@types/express": "^4.17.6", "serve-handler": "^6.1.2" }, diff --git a/packages/documentation/copy/id/Nightly Builds.md b/packages/documentation/copy/id/Nightly Builds.md deleted file mode 100644 index 42d5e0aee5be..000000000000 --- a/packages/documentation/copy/id/Nightly Builds.md +++ /dev/null @@ -1,80 +0,0 @@ ---- -title: Nightly Builds -layout: docs -permalink: /id/docs/handbook/nightly-builds.html -oneline: Cara menggunakan nightly build TypeScript -translatable: true ---- - -_Nightly build_ dari _branch_ [master TypeScript](https://github.com/Microsoft/TypeScript/tree/master) diterbitkan pada tengah malam, di zona waktu PST ke npm. -Berikut adalah cara untuk mendapatkan versi ini dan cara menggunakannya. - -## Menggunakan npm - -```shell -npm install -g typescript@next -``` - -## Memperbarui IDE-mu untuk menggunakan _nightly builds_ - -Anda juga dapat memperbarui IDE-mu untuk menggunakan _nightly_ drop. -Pertama, Anda akan perlu untuk memasang package melalui npm. -Anda juga dapat memasang npm _package_ secara global atau pada direktori `node_modules` di dalam proyekmu. - -Pada tahap ini diasumsikan bahwa `typescript@next` sudah dipasang. - -### Visual Studio Code - -Perbarui `.vscode/settings.json` dengan cara berikut: - -```json -"typescript.tsdk": "/node_modules/typescript/lib" -``` - -Informasi lebih lanjut ada di [Dokumentasi VSCode](https://code.visualstudio.com/Docs/languages/typescript#_using-newer-typescript-versions). - -### Sublime Text - -Perbarui berkas `Settings - User` dengan cara berikut: - -```json -"typescript_tsdk": "/node_modules/typescript/lib" -``` - -Informasi lebih lanjut ada di [Dokumentasi pemasangan _Plugin_ TypeScript untuk Sublime Text](https://github.com/Microsoft/TypeScript-Sublime-Plugin#installation). - -### Visual Studio 2013 dan 2015 - -> Catatan: Sebagian besar perubahan tidak mengharuskan anda untuk memasang versi terbaru dari _plugin_ VS TypeScript. - -Saat ini, _Nightly build_ tidak menyertakan _plugin_ secara lengkap, tapi kami sedang mengupayakan untuk menerbitkan sebuah _installer_ di _nightly_. - -1. Unduh kode [VSDevMode.ps1](https://github.com/Microsoft/TypeScript/blob/master/scripts/VSDevMode.ps1) kode. - - > Lihat juga halaman wiki kami di [menggunakan berkas custom language service](https://github.com/Microsoft/TypeScript/wiki/Dev-Mode-in-Visual-Studio#using-a-custom-language-service-file). - -2. Melalui perintah PowerShell, jalankan: - -Untuk VS 2015: - -```posh -VSDevMode.ps1 14 -tsScript /node_modules/typescript/lib -``` - -Untuk VS 2013: - -```posh -VSDevMode.ps1 12 -tsScript /node_modules/typescript/lib -``` - -### IntelliJ IDEA (Mac) - -Masuk ke `Preferences` > `Languages & Frameworks` > `TypeScript`: - -> Versi TypeScript: Jika anda memasangnya dengan npm, maka akan ada di `/usr/local/lib/node_modules/typescript/lib` - -### IntelliJ IDEA (Windows) - -Masuk ke `File` > `Settings` > `Languages & Frameworks` > `TypeScript`: - -> Versi TypeScript: Jika anda memasangnya dengan npm, maka akan ada di `C:\Users\USERNAME\AppData\Roaming\npm\node_modules\typescript\lib` diff --git a/packages/documentation/copy/id/javascript/Creating DTS files From JS.md b/packages/documentation/copy/id/javascript/Creating DTS files From JS.md deleted file mode 100644 index 8bb0435e586d..000000000000 --- a/packages/documentation/copy/id/javascript/Creating DTS files From JS.md +++ /dev/null @@ -1,87 +0,0 @@ ---- -title: Membuat Berkas .d.ts dari berkas .js -layout: docs -permalink: /id/docs/handbook/declaration-files/dts-from-js.html -oneline: "Bagaimana cara menambahkan hasil d.ts ke proyek JavaScript" -translatable: true ---- - -[Dengan TypeScript 3.7](/docs/handbook/release-notes/typescript-3-7.html#--declaration-and---allowjs), TypeScript menambahkan dukungan untuk menghasilkan berkas .d.ts dari JavaScript menggunakan sintaks JSDoc. - -Pengaturan ini berarti Anda memiliki _editor_ yang mendukung TypeScript tanpa memindahkan proyek anda ke TypeScript, atau harus memelihara berkas .d.ts di basis kodemu. -TypeScript mendukung sebagian besar tag JSDoc, Anda bisa menemukannya [di referensi ini](/docs/handbook/type-checking-javascript-files.html#supported-jsdoc). - -## Menyiapkan proyekmu untuk menggunakan berkas .d.ts - -Untuk menambahkan pembuatan berkas .d.ts di proyekmu, Anda perlu melakukan empat langkah berikut: - -- Tambahkan TypeScript ke dependensi _dev_ Anda -- Tambahkan `tsconfig.json` untuk mengkonfigurasi TypeScript -- Jalankan kompilator TypeScript untuk menghasilkan berkas d.ts yang sesuai untuk berkas JS -- (_opsional_) Sunting package.json Anda untuk mereferensikan tipe - -### Menambahkan TypeScript - -Anda bisa mempelajari cara melakukan ini di [halaman instalasi](/download) kami. - -### TSConfig - -TSConfig adalah berkas jsonc yang mengkonfigurasi kedua _flag_ kompilator Anda, dan menyatakan di mana mencari berkas. -Dalam kasus ini, Anda menginginkan berkas seperti berikut: - -```jsonc tsconfig -{ - // Ubah ini agar sesuai dengan proyek Anda - "include": ["src/**/*"], - - "compilerOptions": { - // Memberi tahu TypeScript untuk membaca berkas JS, - // karena biasanya berkas tersebut diabaikan sebagai berkas sumber - "allowJs": true, - // Hasilkan berkas d.ts - "declaration": true, - // Proses kompilator ini seharusnya - // hanya mengeluarkan berkas d.ts - "emitDeclarationOnly": true, - // Tipe harus masuk ke direktori ini. - // Menghapus ini akan menempatkan berkas .d.ts - // di sebelah berkas .js - "outDir": "dist" - } -} -``` - -Anda dapat mempelajari lebih lanjut tentang opsi di [referensi tsconfig](/reference). -Alternatif untuk menggunakan berkas TSConfig adalah CLI, ini adalah perilaku yang sama seperti perintah CLI. - -```sh -npx typescript src/**/*.js --declaration --allowJs --emitDeclarationOnly --outDir types -``` - -## Menjalankan kompilator - -Anda bisa mempelajari bagaimana melakukan ini di [halaman pemasangan](/download) TypeScript kami. -Anda perlu memastikan berkas-berkas ini disertakan dalam package Anda jika Anda memiliki berkas dalam `gitignore` proyek Anda. - -## Menyunting berkas package.json - -TypeScript mereplikasi resolusi _node_ untuk modul di `package.json`, dengan langkah tambahan untuk menemukan berkas .d.ts. -Secara garis besar, Pertama-tama resolusi akan memeriksa bagian `"types"` yang opsional, kemudian bidang `"main"`, dan terakhir akan mencoba `index.d.ts` di _root_. - -| Package.json | Location of default .d.ts | -| :------------------------ | :----------------------------- | -| No "types" field | checks "main", then index.d.ts | -| "types": "main.d.ts" | main.d.ts | -| "types": "./dist/main.js" | ./main/main.d.ts | - -Jika tidak ada, maka "main" akan digunakan - -| Package.json | Location of default .d.ts | -| :----------------------- | :------------------------ | -| No "main" field | index.d.ts | -| "main":"index.js" | index.d.ts | -| "main":"./dist/index.js" | ./dist/index.d.ts | - -## Tips - -Jika kamu suka menulis tes untuk berkas .d.ts, coba [tsd](https://github.com/SamVerschueren/tsd). diff --git a/packages/documentation/copy/id/javascript/Intro to JS with TS.md b/packages/documentation/copy/id/javascript/Intro to JS with TS.md deleted file mode 100644 index 9239f5a93a9f..000000000000 --- a/packages/documentation/copy/id/javascript/Intro to JS with TS.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: Memanfaatkan Typescript pada Proyek JS -layout: docs -permalink: /id/docs/handbook/intro-to-js-ts.html -oneline: Cara menambahkan pemeriksaan tipe data pada berkas JavaScript menggunakan TypeScript -translatable: true ---- - -Sistem tipe data di TypeScript memiliki tingkat keketatan yang berbeda saat bekerja dengan basis kode: - -- Sistem tipe data yang hanya berdasarkan pada inferensi dengan kode JavaScript -- Pengetikkan secara bertahap di JavaScript [melalui JSDoc](/docs/handbook/jsdoc-supported-types.html) -- Menggunakan `// @ts-check` di berkas JavaScript -- Kode TypeScript -- TypeScript dengan [`strict`](/tsconfig#strict) diaktifkan - -Setiap langkah mewakili tahapan sistem tipe yang lebih aman, tetapi tidak setiap proyek membutuhkan tingkat verifikasi seperti itu. - -## TypeScript dengan JavaScript - -Ini ketika _editor_-mu yang menggunakan TypeScript untuk menyediakan _tool_, seperti _auto-complete_, _jump to symbol_, dan _refactoring_, misalnya penamaan ulang. -Di [Homepage](/) tersedia daftar _editor_ yang memiliki plugin TypeScript. - -## Menyediakan Type Hints di JS melalui JSDoc - -Di berkas `.js`, tipe sering kali dapat diketahui. Namun ketika tipe tidak diketahui, mereka bisa ditentukan menggunakan sintaks JSDoc. - -Anotasi JSDoc diletakkan sebelum mendeklarasikan suatu hal. Seperti contoh berikut: - -```js twoslash -/** @type {number} */ -var x; - -x = 0; // OK -x = false; // OK?! -``` - -Anda dapat menemukan daftar lengkap mengenai dukungan pola JSDoc [di Tipe-tipe yang didukung JSDoc](/docs/handbook/jsdoc-supported-types.html) - -## `@ts-check` - -Baris terakhir dari contoh kode sebelumnya akan menimbulkan kesalahan dalam TypeScript, tetapi tidak secara bawaan dalam proyek JS. -Untuk mengaktifkan galat dalam berkas JavaScript-mu, tambahkan: `// @ ts-check` ke baris pertama dalam berkas`.js` Anda agar TypeScript dapat memeriksa kesalahan. - -```js twoslash -// @ts-check -// @errors: 2322 -/** @type {number} */ -var x; - -x = 0; // OK -x = false; // Not OK -``` - -Jika anda memiliki banyak berkas JavaScript yang ingin ditambahkan pemeriksaan galatnya, Anda bisa beralhir menggunakan [`jsconfig.json`](/docs/handbook/tsconfig-json.html). -Dengan begitu, Anda tidak perlu menambahkan `// @ts-nocheck` di tiap berkasnya. - -TypeScript mungkin memberikan galat yang Anda tidak sepakati. Pada kasus tersebut, Anda bisa membiarkan galat itu spesifik dibaris manapun dengan menambahkan `// @ts-ignore` atau `// @ts-expect-error`. - -```js twoslash -// @ts-check -/** @type {number} */ -var x; - -x = 0; // OK -// @ts-expect-error -x = false; // Not OK -``` - -Untuk mempelajari lebih lanjut bagaimana JavaScript diinterpretasi oleh TypeScript, Anda dapat membaca [Bagaimana TS Type Memeriksa JS](/docs/handbook/type-checking-javascript-files.html) diff --git a/packages/documentation/copy/id/javascript/JSDoc Reference.md b/packages/documentation/copy/id/javascript/JSDoc Reference.md deleted file mode 100644 index 1bd7d961f2a4..000000000000 --- a/packages/documentation/copy/id/javascript/JSDoc Reference.md +++ /dev/null @@ -1,692 +0,0 @@ ---- -title: Referensi JSDoc -layout: docs -permalink: /id/docs/handbook/jsdoc-supported-types.html -oneline: JSDoc apa yang didukung JavaScript dan TypeScript? -translatable: true ---- - -Dibawah ini adalah daftar anotasi yang didukung saat menggunakan JSDoc untuk menyediakan informasi di berkas Javscript. - -Perhatikan semua tag yang tidak secara eksplisit dicantumkan di bawah (seperti `@ async`) belum didukung. - -- `@type` -- `@param` (atau `@arg` atau `@argument`) -- `@returns` (atau `@return`) -- `@typedef` -- `@callback` -- `@template` -- `@class` (atau `@constructor`) -- `@this` -- `@extends` (atau `@augments`) -- `@enum` - -#### Ekstensi `class` - -- [Property Modifiers](#jsdoc-property-modifiers) `@public`, `@private`, `@protected`, `@readonly` - -Artinya biasanya sama, atau _superset_, dari arti _tag_ yang diberikan di [jsdoc.app](https://jsdoc.app). -Kode dibawah mendeskripsikan perbedaan dan beberapa contoh dari setiap _tag_-nya. - -**Catatan:** Anda bisa menggunakan [_playground_ untuk mengeksplor dukungan JSDoc](/play?useJavaScript=truee=4#example/jsdoc-support). - -## `@type` - -Anda dapat menggunakan _tag_ "@type" dan mereferensikan nama jenis (baik primitif, ditentukan dalam deklarasi TypeScript, atau dalam _tag_ "@typedef" JSDoc). -Anda dapat menggunakan sebagian besar jenis JSDoc dan jenis TypeScript apa pun, dari [yang paling dasar seperti `string`](/docs/handbookbasic-types.html) hingga [yang paling canggih, seperti jenis bersyarat](/docs/handbook/advanced-types.html). - -```js twoslash -/** - * @type {string} - */ -var s; - -/** @type {Window} */ -var win; - -/** @type {PromiseLike} */ -var promisedString; - -// Anda dapat menentukan Elemen HTML dengan properti DOM -/** @type {HTMLElement} */ -var myElement = document.querySelector(selector); -element.dataset.myData = ""; -``` - -`@type` dapat menetapkan tipe gabungan — misalnya, sesuatu bisa berupa _string_ atau _boolean_. - -```js twoslash -/** - * @type {(string | boolean)} - */ -var sb; -``` - -Perhatikan bahwa tanda kurung bersifat opsional untuk tipe gabungan. - -```js twoslash -/** - * @type {string | boolean} - */ -var sb; -``` - -Anda dapat menentukan tipe _array_ menggunakan berbagai sintaks: - -```js twoslash -/** @type {number[]} */ -var ns; -/** @type {Array.} */ -var nds; -/** @type {Array} */ -var nas; -``` - -Anda juga dapat menentukan tipe _literal_ objek. -Misalnya, objek dengan properti 'a' (_string_) dan 'b' (angka) menggunakan sintaks berikut: - -```js twoslash -/** @type {{ a: string, b: number }} */ -var var9; -``` - -Anda dapat menentukan objek seperti _map_ dan _array_ menggunakan index signature _string_ dan angka, menggunakan sintaks JSDoc standar atau sintaks TypeScript. - -```js twoslash -/** - * Objek map yang memetakan kunci string dan nilainya bertipe number. - * - * @type {Object.} - */ -var stringToNumber; - -/** @type {Object.} */ -var arrayLike; -``` - -Dua jenis sebelumnya sama dengan tipe TypeScript `{ [x: string]: number }` dan `{ [x: number]: any }`. Kompilator memahami kedua sintaks tersebut. - -Anda dapat menentukan jenis fungsi menggunakan sintaks TypeScript atau _Closure_: - -```js twoslash -/** @type {function(string, boolean): number} Closure syntax */ -var sbn; -/** @type {(s: string, b: boolean) => number} TypeScript syntax */ -var sbn2; -``` - -Atau anda dapat menggunakan type `Function` yang tidak ditentukan: - -```js twoslash -/** @type {Function} */ -var fn7; -/** @type {function} */ -var fn6; -``` - -Type lainnya dari _Closure_ juga berfungsi: - -```js twoslash -/** - * @type {*} - can be 'any' type - */ -var star; -/** - * @type {?} - unknown type (same as 'any') - */ -var question; -``` - -### Casts - -TypeScript meminjam sintaks _cast_ dari _Closure_. -Ini memungkinkan Anda mentransmisikan tipe ke tipe lain dengan menambahkan tag `@type` sebelum ekspresi dalam tanda kurung. - -```js twoslash -/** - * @type {number | string} - */ -var numberOrString = Math.random() < 0.5 ? "hello" : 100; -var typeAssertedNumber = /** @type {number} */ (numberOrString); -``` - -### Impor type - -Anda bisa juga mengimpor deklarasi dari berkas lain menggunakan impor tipe. -Sintaks ini khusus untuk TypeScript dan berbeda dari standar JSDoc: - -```js twoslash -// @filename: types.d.ts -export type Pet = { - name: string, -}; - -// @filename: main.js -/** - * @param p { import("./types").Pet } - */ -function walk(p) { - console.log(`Walking ${p.name}...`); -} -``` - -mengimpor tipe juga dapat digunakan di deklarasi tipe alias: - -```js twoslash -// @filename: types.d.ts -export type Pet = { - name: string, -}; -// @filename: main.js -// ---cut--- -/** - * @typedef { import("./types").Pet } Pet - */ - -/** - * @type {Pet} - */ -var myPet; -myPet.name; -``` - -Mengimpor tipe dapat digunakan untuk mendapatkan tipe nilai dari modul, jika Anda tidak mengetahui jenisnya, atau jika nilai tersebut memiliki tipe yang besar yang dapat mengganggu untuk diketik: - -```js twoslash -// @filename: accounts.d.ts -export const userAccount = { - name: "Name", - address: "An address", - postalCode: "", - country: "", - planet: "", - system: "", - galaxy: "", - universe: "", -}; -// @filename: main.js -// ---cut--- -/** - * @type {typeof import("./accounts").userAccount } - */ -var x = require("./accounts").userAccount; -``` - -## `@param` and `@returns` - -`@param` menggunakan jenis sintaks yang sama dengan `@type`, tapi dengan tambahan sebuah nama _parameter_. -_Parameter_ juga dapat dideklarasikan secara opsional dengan membungkus namanya menggunakan kurung siku: - -```js twoslash -// Parameter dapat dideklarasikan dalam berbagai bentuk sintaksis -/** - * @param {string} p1 - Parameter string. - * @param {string=} p2 - Opsional param (sintaks Closure) - * @param {string} [p3] - Opsional param lainnya (sintaks JSDoc). - * @param {string} [p4="test"] - Opsional param dengan nilai standar - * @return {string} Ini adalah hasilnya - */ -function stringsStringStrings(p1, p2, p3, p4) { - // MELAKUKAN -} -``` - -Demikian juga, untuk tipe kembalian suatu fungsi: - -```js twoslash -/** - * @return {PromiseLike} - */ -function ps() {} - -/** - * @returns {{ a: string, b: number }} - Dapat menggunakan '@returns' serta '@return' - */ -function ab() {} -``` - -## `@typedef`, `@callback`, and `@param` - -`@ty[edef` juga dapat digunakan untuk mendefinisikan tipe yang kompleks. -Sintaks yang bekerja dengan `@params`. - -```js twoslash -/** - * @typedef {Object} SpecialType - buat type baru bernama 'SpecialType' - * @property {string} prop1 - properti string dari SpecialType - * @property {number} prop2 - properti number dari SpecialType - * @property {number=} prop3 - properti number opsional dari SpecialType - * @prop {number} [prop4] - properti number opsional dari SpecialType - * @prop {number} [prop5=42] - properti number opsional dari SpecialType dengan nilai standar - */ - -/** @type {SpecialType} */ -var specialTypeObject; -specialTypeObject.prop3; -``` - -Anda bisa menggunakan `object` atau `Object` pada baris pertama. - -```js twoslash -/** - * @typedef {object} SpecialType1 - buat tipe baru bernama 'SpecialType' - * @property {string} prop1 - properti string dari SpecialType - * @property {number} prop2 - properti number dari SpecialType - * @property {number=} prop3 - opsional properti number dari SpecialType - */ - -/** @type {SpecialType1} */ -var specialTypeObject1; -``` - -`@params` memperbolehkan sintaks yang serupa untuk spesifikasi tipenya. -Perhatikan bahwa nama properti _nested_ harus diawali dengan nama _parameter_-nya: - -```js twoslash -/** - * @param {Object} options - Bentuknya sama dengan SpecialType di atas - * @param {string} options.prop1 - * @param {number} options.prop2 - * @param {number=} options.prop3 - * @param {number} [options.prop4] - * @param {number} [options.prop5=42] - */ -function special(options) { - return (options.prop4 || 1001) + options.prop5; -} -``` - -`@callback` mirip dengan `@typedef`, tetapi ini menetapkan tipe fungsi daripada tipe objek: - -```js twoslash -/** - * @callback Predicate - * @param {string} data - * @param {number} [index] - * @returns {boolean} - */ - -/** @type {Predicate} */ -const ok = (s) => !(s.length % 2); -``` - -Tentu saja, salah satu dari jenis ini dapat dideklarasikan menggunakan sintaks TypeScript dalam satu baris `@typedef`: - -```js -/** @typedef {{ prop1: string, prop2: string, prop3?: number }} SpecialType */ -/** @typedef {(data: string, index?: number) => boolean} Predicate */ -``` - -## `@template` - -Anda dapat mendeklarasikan fungsi generik dengan tag `@template`: - -```js twoslash -/** - * @template T - * @param {T} x - Parameter umum yang mengalir ke tipe kembalian - * @return {T} - */ -function id(x) { - return x; -} - -const a = id("string"); -const b = id(123); -const c = id({}); -``` - -Gunakan koma atau beberapa _tag_ untuk mendeklarasikan beberapa _parameter_ tipe: - -```js -/** - * @template T,U,V - * @template W,X - */ -``` - -Anda juga bisa menentukan batasan tipe sebelum nama _parameter_-nya. -Hanya _parameter_ tipe pertama dalam sebuah list yang dibatasi. - -```js twoslash -/** - * @template {string} K - K harus berupa string atau string literal - * @template {{ serious(): string }} Seriousalizable - harus memiliki method serious - * @param {K} key - * @param {Seriousalizable} object - */ -function seriousalize(key, object) { - // ???? -} -``` - -Mendeklarasikan kelas generik atau tipe yang tidak didukung. - -## Classes - -Kelas yang dapat dideklarasikan sebagai kelas ES6. - -```js twoslash -class C { - /** - * @param {number} data - */ - constructor(data) { - // tipe properti yang bisa diketahui - this.name = "foo"; - - // atau mengaturnya secara eksplisit - /** @type {string | null} */ - this.title = null; - - // atau hanya diberi anotasi, jika disetel di tempat lain - /** @type {number} */ - this.size; - - this.initialize(data); // Seharusnya galat, karena inisialisasi mengharapkan string - } - /** - * @param {string} s - */ - initialize = function (s) { - this.size = s.length; - }; -} - -var c = new C(0); - -// C seharusnya hanya dipanggil dengan yang baru, -// tetapi karena ini adalah JavaScript, ini -// diperbolehkan dan dianggap sebagai 'any'. -var result = C(1); -``` - -Mereka juga dapat dideklarasikan sebagai fungsi konstruktor, seperti yang dijelaskan di bagian selanjutnya: - -## `@constructor` - -Kompilator menyimpulkan fungsi konstruktor berdasarkan penetapan properti ini, tetapi Anda dapat membuat pemeriksaan lebih ketat dan saran lebih baik jika Anda menambahkan _tag_ `@constructor`: - -```js twoslash -// @checkJs -// @errors: 2345 2348 -/** - * @constructor - * @param {number} data - */ -function C(data) { - // tipe properti yang dapat diketahui - this.name = "foo"; - - // atau atur secara eksplisit - /** @type {string | null} */ - this.title = null; - - // atau hanya diberi anotasi, jika disetel di tempat lain - /** @type {number} */ - this.size; - - this.initialize(data); -} -/** - * @param {string} s - */ -C.prototype.initialize = function (s) { - this.size = s.length; -}; - -var c = new C(0); -c.size; - -var result = C(1); -``` - -> Catatan: Pesan galat hanya tampil di basis kode JS dengan [JSConfig](/docs/handbook/tsconfig-json.html) dan [`checkJS`](/tsconfig#checkJs) yang diaktifkan. - -Dengan `@constructor`, `this` diperiksa didalam fungsi konstruktor `C`, jadi anda akan mendapatkan saran untuk method `initialize` dan sebuah galat jika anda memasukkan sebuah angka. Editor-mu mungkin akan menampilkan peringatan jika memanggil `C` daripada mengkonstruksikannya. - -Sayangnya, ini berarti bahwa fungsi konstruktor yang juga dapat dipanggil tidak dapat menggunakan `@constructor`. - -## `@this` - -Kompilator biasanya dapat mengetahui tipe `this` ketika ia memiliki beberapa konteks untuk dikerjakan. Jika tidak, Anda dapat secara eksplisit menentukan jenis `this` dengan `@this`: - -```js twoslash -/** - * @this {HTMLElement} - * @param {*} e - */ -function callbackForLater(e) { - this.clientHeight = parseInt(e); // seharusnya baik-baik saja! -} -``` - -## `@extends` - -Ketika kelas JavaScript memperluas _base class_, tidak ada tempat untuk menentukan seharusnya menggunakan parameter tipe yang seperti apa. _Tag_ `@extends` menyediakan tempat untuk parameter jenis itu: - -```js twoslash -/** - * @template T - * @extends {Set} - */ -class SortableSet extends Set { - // ... -} -``` - -Perhatikan bahwa `@extends` hanya berfungsi dengan kelas. Saat ini, tidak ada cara untuk fungsi konstruktor memperluas kelas. - -## `@enum` - -Tag `@enum` memungkinkan Anda membuat _literal_ objek yang tipe anggotanya spesifik. Tidak seperti kebanyakan _literal_ objek di JavaScript, ini tidak mengizinkan anggota lain. - -```js twoslash -/** @enum {number} */ -const JSDocState = { - BeginningOfLine: 0, - SawAsterisk: 1, - SavingComments: 2, -}; - -JSDocState.SawAsterisk; -``` - -Perhatikan bahwa `@enum` sangat berbeda, dan jauh lebih sederhana daripada `enum` TypeScript. Namun, tidak seperti _enum_ TypeScript, `@enum` dapat memiliki tipe apa saja: - -```js twoslash -/** @enum {function(number): number} */ -const MathFuncs = { - add1: (n) => n + 1, - id: (n) => -n, - sub1: (n) => n - 1, -}; - -MathFuncs.add1; -``` - -## Lebih banyak contoh - -```js twoslash -class Foo {} -// ---cut--- -var someObj = { - /** - * @param {string} param1 - Dokumen tentang tugas properti - */ - x: function (param1) {}, -}; - -/** - * Seperti halnya dokumen tentang tugas variabel - * @return {Window} - */ -let someFunc = function () {}; - -/** - * Dan method kelas - * @param {string} greeting Salam untuk digunakan - */ -Foo.prototype.sayHi = (greeting) => console.log("Hi!"); - -/** - * Dan ekspresi arrow function - * @param {number} x - Pengganda - */ -let myArrow = (x) => x * x; - -/** - * Artinya, ini juga berfungsi untuk komponen fungsi stateless di JSX - * @param {{a: string, b: number}} test - Beberapa param - */ -var sfc = (test) =>
{test.a.charAt(0)}
; - -/** - * Parameter bisa menjadi konstruktor kelas, menggunakan sintaks Closure. - * - * @param {{new(...args: any[]): object}} C - Kelas untuk mendaftar - */ -function registerClass(C) {} - -/** - * @param {...string} p1 - A 'rest' arg (array) of strings. (treated as 'any') - */ -function fn10(p1) {} - -/** - * @param {...string} p1 - A 'rest' arg (array) of strings. (treated as 'any') - */ -function fn9(p1) { - return p1.join(); -} -``` - -## Pola yang diketahui TIDAK didukung - -Mengacu pada objek di _value space_ sebagai tipe yang tidak berfungsi, kecuali objek tersebut juga membuat tipe, seperti fungsi konstruktor. - -```js twoslash -function aNormalFunction() {} -/** - * @type {aNormalFunction} - */ -var wrong; -/** - * Gunakan 'typeof' sebagai gantinya: - * @type {typeof aNormalFunction} - */ -var right; -``` - -_Postfix_ sama dengan tipe properti dalam tipe _literal_ objek yang tidak menetapkan properti opsional: - -```js twoslash -/** - * @type {{ a: string, b: number= }} - */ -var wrong; -/** - * Gunakan postfix question pada nama properti sebagai gantinya: - * @type {{ a: string, b?: number }} - */ -var right; -``` - -Jenis _Nullable_ hanya memiliki arti jika `strictNullChecks` aktif: - -```js twoslash -/** - * @type {?number} - * With strictNullChecks: true -- number | null - * With strictNullChecks: false -- number - */ -var nullable; -``` - -Anda juga bisa menggunakan tipe gabungan: - -```js twoslash -/** - * @type {number | null} - * With strictNullChecks: true -- number | null - * With strictNullChecks: false -- number - */ -var unionNullable; -``` - -Tipe _non-nullable_ tidak memiliki arti dan diperlakukan seperti jenis aslinya: - -```js twoslash -/** - * @type {!number} - * Hanya bertipe number - */ -var normal; -``` - -Tidak seperti sistem tipe JSDoc, TypeScript hanya memungkinkan Anda untuk menandai tipe, apakah mengandung null atau tidak. -Tidak ada non-nullability eksplisit - jika strictNullChecks aktif, `number` tidak dapat dinihilkan. -Jika tidak aktif, maka `number` adalah nullable. - -### _Tag_ yang tidak didukung - -TypeScript mengabaikan semua _tag_ JSDoc yang tidak didukung. - -_Tag_ berikut memiliki isu terbuka untuk mendukungnya: - -- `@const` ([issue #19672](https://github.com/Microsoft/TypeScript/issues/19672)) -- `@inheritdoc` ([issue #23215](https://github.com/Microsoft/TypeScript/issues/23215)) -- `@memberof` ([issue #7237](https://github.com/Microsoft/TypeScript/issues/7237)) -- `@yields` ([issue #23857](https://github.com/Microsoft/TypeScript/issues/23857)) -- `{@link …}` ([issue #35524](https://github.com/Microsoft/TypeScript/issues/35524)) - -## Extensi kelas JS - -### _Modifier Property_ JSDoc - -Dari TypeScript 3.8 dan seterusnya, Anda dapat menggunakan JSDoc untuk mengubah properti kelas. Pertama adalah pengubah aksesibilitas: `@public`,`@private`, dan `@protected`. -Tag ini bekerja persis seperti `public`,`private`, dan `protected`, masing-masing berfungsi di TypeScript. - -```js twoslash -// @errors: 2341 -// @ts-check - -class Car { - constructor() { - /** @private */ - this.identifier = 100; - } - - printIdentifier() { - console.log(this.identifier); - } -} - -const c = new Car(); -console.log(c.identifier); -``` - -- `@public` ini berarti properti dapat diakses dari mana saja. -- `@private` berarti bahwa properti hanya dapat digunakan di dalam kelas yang memuatnya. -- `@protected` berarti bahwa properti hanya dapat digunakan di dalam kelas penampung, dan semua subkelas turunan, tetapi tidak pada instance kelas penampung yang berbeda. - -Selanjutnya, kita juga telah menambahkan _modifier_ `@readonly` untuk memastikan bahwa sebuah properti hanya dapat di-_write_ selama inisialisasi. - -```js twoslash -// @errors: 2540 -// @ts-check - -class Car { - constructor() { - /** @readonly */ - this.identifier = 100; - } - - printIdentifier() { - console.log(this.identifier); - } -} - -const c = new Car(); -console.log(c.identifier); -``` diff --git a/packages/documentation/copy/id/project-config/Configuring Watch.md b/packages/documentation/copy/id/project-config/Configuring Watch.md deleted file mode 100644 index 568b9f637930..000000000000 --- a/packages/documentation/copy/id/project-config/Configuring Watch.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Mengkonfigurasi Watch -layout: docs -permalink: /id/docs/handbook/configuring-watch.html -oneline: Cara mengkonfigurasi mode watch TypeScript -translatable: true ---- - -Kompilator mendukung konfigurasi cara mengawasi berkas dan direktori menggunakan kompilator _flags_ di TypeScript 3.8+, dan variabel _environment_. - -## Latar Belakang - -Implementasi `--watch` dari _compiter_ bergantung pada penggunaan `fs.watch` dan `fs.watchFile` yang disediakan oleh _node_, kedua metode ini memiliki kelebihan dan kekurangan. - -`fs.watch` menggunakan berkas _system event_ untuk memberi tahu perubahan dalam berkas/direktori. Tetapi ini bergantung pada OS dan notifikasi tidak sepenuhnya dapat diandalkan dan tidak berfungsi seperti yang diharapkan pada banyak OS. Juga mungkin ada batasan jumlah _watch_ yang dapat dibuat, misalnya linux dan kami dapat melakukannya dengan cukup cepat dengan program yang menyertakan banyak berkas. Tetapi karena ini menggunakan berkas _system event_, tidak banyak siklus CPU yang terlibat. Kompilator biasanya menggunakan `fs.watch` untuk melihat direktori (misalnya. Direktori sumber disertakan oleh berkas konfigurasi, direktori di mana resolusi modul gagal, dll.) Ini dapat menangani ketepatan yang hilang dalam memberi tahu tentang perubahan. Tetapi memantau secara rekursif hanya didukung pada Windows dan OSX. Artinya kita membutuhkan sesuatu untuk menggantikan sifat rekursif di OS lain. - -`fs.watchFile` menggunakan polling dan karenanya melibatkan siklus CPU. Tetapi ini adalah mekanisme yang paling andal untuk mendapatkan pembaruan status berkas/direktori. Kompilator biasanya menggunakan `fs.watchFile` untuk melihat berkas sumber, berkas konfigurasi dan berkas yang hilang (referensi berkas hilang) yang berarti penggunaan CPU bergantung pada jumlah berkas dalam program. - -## Konfigurasi berkas _watching_ menggunakan `tsconfig.json` - -```json tsconfig -{ - // Beberapa opsi kompilator umumnya - "compilerOptions": { - "target": "es2020", - "moduleResolution": "node" - // ... - }, - - // BARU: Opsi untuk memantau berkas/direktori - "watchOptions": { - // Gunakan native berkas system events untuk berkas dan direktori - "watchFile": "useFsEvents", - "watchDirectory": "useFsEvents", - - // Dapatkan pembaruan berkas - // ketika terdapat update yang besar. - "fallbackPolling": "dynamicPriority" - } -} -``` - -Anda dapat membacanya lebih lanjut di [catatan rilis](/docs/handbook/release-notes/typescript-3-8.html#better-directory-watching-on-linux-and-watchoptions). - -## Konfigurasi berkas _watching_ menggunakan variabel environment `TSC_WATCHFILE` - - -Opsi | Deskripsi ------------------------------------------------|---------------------------------------------------------------------- -`PriorityPollingInterval` | Gunakan `fs.watchFile` tetapi gunakan _interval polling_ yang berbeda untuk berkas sumber, berkas konfigurasi, dan berkas yang hilang -`DynamicPriorityPolling` | Gunakan antrian dinamis di mana dalam berkas yang sering dimodifikasi akan memiliki _interval_ yang lebih pendek dan berkas yang tidak diubah akan lebih jarang diperiksa -`UseFsEvents` | Gunakan `fs.watch` untuk memanfaatkan _system event_ berkas (tetapi mungkin tidak akurat pada OS yang berbeda) untuk mendapatkan pemberitahuan terhadap perubahan/pembuatan/penghapusan berkas. Perhatikan bahwa beberapa OS misalnya. linux memiliki batasan jumlah pengamatan dan jika gagal melakukan pengamatan menggunakan `fs.watch`, maka pengamatan akan dilakukan dengan `fs.watchFile` -`UseFsEventsWithFallbackDynamicPolling` | Opsi ini mirip dengan `UseFsEvents` kecuali jika gagal memantau menggunakan `fs.watch`, pengawasan dilakukan melalui antrean _polling_ dinamis (seperti dijelaskan dalam `DynamicPriorityPolling`) -`UseFsEventsOnParentDirectory` | Opsi ini mengawasi direktori induk dari berkas dengan `fs.watch` (menggunakan berkas _system event_) sehingga menjadi rendah pada CPU tetapi dengan keakuratan yang rendah. -standar (tanpa menspesifikkan nilainya) | Jika variabel environment `TSC_NONPOLLING_WATCHER` di-set ke true, maka akan mengawasi direktori induk dari berkas (seperti `UseFsEventsOnParentDirectory`). Jika tidak, akan menggunakan `fs.watchFile` dengan `250ms` sebagai waktu tunggu untuk berkas apa pun. - -## Mengonfigurasi pengawasan direktori menggunakan variabel _environment_ `TSC_WATCHDIRECTORY` - -Pemantauan direktori pada platform yang tidak mendukung pemantau direktori rekursif secara _native_ di _node_, maka akan menggunakan opsi yang berbeda, yang dipilih oleh`TSC_WATCHDIRECTORY`. Perlu dicatat bahwa, _platform_ yang mendukung pemantauan direktori secara rekursif (misalnya Windows), nilai dari variabel environment tersebut akan diabaikan. - - -Opsi | Deskripsi ------------------------------------------------|---------------------------------------------------------------------- -`RecursiveDirectoryUsingFsWatchFile` | Gunakan `fs.watchFile` untuk mengawasi direktori dan direktori anak yang merupakan _polling watch_ (menggunakan siklus CPU) -`RecursiveDirectoryUsingDynamicPriorityPolling`| Gunakan antrian polling dinamis untuk mengumpulkan perubahan pada direktori dan sub direktori. -_default_ (tidak ada nilai yang ditentukan) | Gunakan `fs.watch` untuk memantau direktoru dan sub direktorinya diff --git a/packages/documentation/copy/id/reference/Decorators.md b/packages/documentation/copy/id/reference/Decorators.md deleted file mode 100644 index 6cd8e38de1a2..000000000000 --- a/packages/documentation/copy/id/reference/Decorators.md +++ /dev/null @@ -1,571 +0,0 @@ ---- -title: Decorators -layout: docs -permalink: /id/docs/handbook/decorators.html -oneline: Ringkasan Dekorator TypeScript -translatable: true ---- - -## Pengenalan - -Dengan pengenalan Kelas-kelas yang ada di TypeScript dan ES6, sekarang ada skenario tertentu yang memerlukan fitur tambahan untuk mendukung anotasi atau modifikasi kelas dan anggota kelas. -_Decorators_ menyediakan cara untuk menambahkan anotasi-anotasi dan sebuah sintaks pemrogragaman meta untuk deklarasi kelas dan anggota kelas. -_Decorators_ ada pada [stage 2 proposal](https://github.com/tc39/proposal-decorators) untuk JavaScript dan juga tersedia pada TypeScript sebagai fitur eksperimental. - -> CATATAN  _Decorators_ adalah fitur eksperimental yang mungkin dapat berubah ketika dirilis nanti. - -Untuk mengaktifkan _Decorators_ eksperimental, anda harus menambahkan opsi `experimentalDecorators` ke baris perintah atau ke berkas `tsconfig.json`. - -**_Command Line_**: - -```shell -tsc --target ES5 --experimentalDecorators -``` - -**tsconfig.json**: - -```json tsconfig -{ - "compilerOptions": { - "target": "ES5", - "experimentalDecorators": true - } -} -``` - -## _Decorator_ - -_Decorator_ adalah jenis deklarasi khusus yang dapat dilampirkan ke [deklarasi kelas](#class-decorators), [method](#method-decorators), [accessor](#accessor-decorators), [property](#property-decorators), atau [parameter](#parameter-decorators). -_Decorators_ menggunakan bentuk `@expression`, dimana `expression` harus mengevaluasi fungsi yang akan dipanggil saat proses dengan informasi tentang deklarasi yang didekorasi. - -Sebagai contoh, ada decorator `@sealed` yang mungkin kita akan menuliskan fungsi `sealed` sebagai berikut: - -```ts -function sealed(target) { - // lakukan sesuatu dengan 'target' ... -} -``` - -> CATATAN  Anda dapat melihat contoh lengkapnya di [Decorator Kelas](#class-decorators). - -## _Decorator Factories_ - -Jika kita ingin menyesuaikan penerapan _decorator_ pada sebuah deklarasi, kita dapat menuliskan sebuah _decorator factory_. _Decorator Factory_ adalah sebuah fungsi yang mengembalikan ekspresi yang akan dipanggil oleh _decorator_ ketika proses. - -Kita dapat menuliskan _decorator factory_ seperti berikut: - -```ts -function color(value: string) { - // ini adalah decorator factory - return function (target) { - // ini adalah decorator - // lakukan sesuatu dengan 'target' dan 'value'... - }; -} -``` - -> CATATAN  Anda dapat melihat contoh lengkap dari penggunaan _decorator factory_ di [_Method Decorators_](#method-decorators) - -## Komposisi _Decorator_ - -Lebih dari satu _decorator_ dapat diterapkan pada sebuah deklarasi, seperti contoh berikut: - -- Penerapan dengan satu baris: - - ```ts - @f @g x - ``` - -- Penerapan lebih dari satu baris: - - ```ts - @f - @g - x - ``` - -Ketika lebih dari satu _decorator_ diterapkan ke sebuah deklarasi, evaluasi yang dilakukan mirip seperti [fungsi komposisi pada matematika](http://wikipedia.org/wiki/Function_composition). Pada model ini, ketika mengkomposisikan fungsi _f_ dan _g_, maka akan menjadi (_f_ ∘ _g_)(_x_) yang sama dengan _f_(_g_(_x_)). - -Dengan demikian, langkah-langkah berikut dilakukan saat mengevaluasi beberapa _decorator_ pada satu deklarasi di TypeScript: - -1. Ekspresi untuk setiap _decorator_ dievaluasi dari atas ke bawah. -2. Hasilnya kemudian disebut sebagai fungsi dari bawah ke atas. - -JIka kita menggunakan [_decorator factories_](#decorator-factories), kita dapat mengamati urutan evaluasi ini dengan contoh berikut: - -```ts -function f() { - console.log("f(): evaluated"); - return function ( - target, - propertyKey: string, - descriptor: PropertyDescriptor - ) { - console.log("f(): called"); - }; -} - -function g() { - console.log("g(): evaluated"); - return function ( - target, - propertyKey: string, - descriptor: PropertyDescriptor - ) { - console.log("g(): called"); - }; -} - -class C { - @f() - @g() - method() {} -} -``` - -Yang akan mencetak keluaran ini ke _console_: - -```shell -f(): evaluated -g(): evaluated -g(): called -f(): called -``` - -## Evaluasi _Decorator_ - -Ada urutan yang jelas tentang bagaimana _decorator_ diterapkan ke berbagai deklarasi yang ada di dalam kelas: - -1. _Parameter Decorators_, diikuti oleh _Method_, _Accessor_, atau _Property Decorators_ diterapkan untuk setiap anggota instance. -1. _Parameter Decorators_, diikuti oleh _Method_, _Accessor_, atau _Property Decorators_ diterapkan untuk setiap anggota statis. -1. _Parameter Dekorator_ diterapkan untuk konstruktor. -1. _Class Decorators_ diterapkan untuk kelas. - -## _Decorator_ Kelas - -_Class Decorator_ dideklarasikan tepat sebelum deklarasi kelas. -_Decorator_ kelas diterapkan ke konstruktor kelas dan dapat digunakan untuk mengamati, memodifikasi, atau mengganti definisi kelas. -_Decorator_ kelas tidak dapat digunakan dalam berkas deklarasi, atau dalam konteks ambien lainnya (seperti pada kelas `deklarasi`). - -Ekspresi untuk _decorator_ kelas akan dipanggil sebagai fungsi pada waktu proses, dengan konstruktor kelas yang didekorasi sebagai satu-satunya argumennya. - -Jika _decorator_ kelas mengembalikan nilai, deklarasi kelas akan diganti dengan fungsi konstruktor yang disediakan. - -> CATATAN  Jika Anda memilih untuk mengembalikan fungsi konstruktor baru, Anda harus berhati-hati dalam mempertahankan prototipe asli. -> Logika yang menerapkan dekorator pada waktu proses **tidak akan** melakukannya untukmu. - -Berikut ini adalah contoh _decorator_ kelas (`@sealed`) yang diterapkan ke kelas _`Greeter`_: - -```ts -@sealed -class Greeter { - greeting: string; - constructor(message: string) { - this.greeting = message; - } - greet() { - return "Hello, " + this.greeting; - } -} -``` - -Kita dapat mendefinisikan _decorator_ `@sealed` menggunakan deklarasi fungsi berikut: - -```ts -function sealed(constructor: Function) { - Object.seal(constructor); - Object.seal(constructor.prototype); -} -``` - -Ketika `@sealed` dijalankan, itu akan menyegel konstruktor dan prototipenya. - -Selanjutnya kita memiliki contoh bagaimana menimpa konstruktor. - -```ts -function classDecorator( - constructor: T -) { - return class extends constructor { - newProperty = "new property"; - hello = "override"; - }; -} - -@classDecorator -class Greeter { - property = "property"; - hello: string; - constructor(m: string) { - this.hello = m; - } -} - -console.log(new Greeter("world")); -``` - -## Method Decorators - -_Method Decorator_ dideklarasikan tepat sebelum deklarasi _method_. -Dekorator diterapkan ke _Property Descriptor_ untuk method, yang dapat digunakan untuk mengamati, memodifikasi, atau mengganti definisi _method_. -_Method Decorator_ tidak dapat digunakan dalam berkas deklarasi, saat kelebihan beban, atau dalam konteks ambien lainnya (seperti dalam kelas `declare`). - -Ekspresi untuk _method decorator_ akan dipanggil sebagai fungsi pada waktu proses, dengan tiga argumen berikut: - -1. Bisa memiliki fungsi konstruktor kelas untuk anggota statis, atau prototipe kelas untuk anggota _instance_. -2. Nama anggota. -3. The _Property Descriptor_ untuk anggota. - -> CATATAN  _Property Descriptor_ akan menjadi `undefined` jika target skripmu dibawah `ES5`. - -Jika _method decorator_ mengembalikan sebuah nilai, maka akan digunakan sebagai _Property Descriptor_ untuk method. - -> CATATAN  Nilai yang dikembalikan akan dibiarkan, jika target kodemu dibawah `ES5`. - -Berikut adalah contoh penerapan _method decorator_ (`@enumerable`) ke method yang ada pada kelas _`Greeter`_: - -```ts -class Greeter { - greeting: string; - constructor(message: string) { - this.greeting = message; - } - - @enumerable(false) - greet() { - return "Hello, " + this.greeting; - } -} -``` - -Kita dapat mendefinisikan _decorator_ `@enumerable` menggunakan fungsi deklarasi berikut: - -```ts -function enumerable(value: boolean) { - return function ( - target: any, - propertyKey: string, - descriptor: PropertyDescriptor - ) { - descriptor.enumerable = value; - }; -} -``` - -_Decorator_ `@enumerable(false)` disini adalah sebuah [_decorator factory_](#decorator-factories). -Ketika _decorator_ `@enumerable(false)` dipanggil, ia akan merubah _`enumerable`_ properti dari properti _descriptor_. - -## _Decorator_ Aksesor - -Sebuah _Accessor Decorator_ dideklarasikan tepat sebelum sebuah deklarasi aksesor. -_Decorator_ aksesor diterapkan ke _Property Descriptor_ untuk aksesor dan dapat digunakan untuk mengamati, memodifikasi, atau mengganti definisi aksesor. -_Decorator_ aksesor tidak dapat digunakan dalam deklarasi berkas, atau dalam konteks ambien lainnya (seperti dalam kelas `declare`). - -> CATATAN  TypeScript melarang penerapan _decorator_ ke aksesor `get` dan `set` untuk _single_ member. -> Sebaliknya, semua _decorator_ untuk anggota harus diterapkan ke pengakses pertama yang ditentukan dalam urutan dokumen. -> Ini karena _decorator_ berlaku untuk _Property Descriptor_, yang menggabungkan aksesor `get` dan `set`, bukan setiap deklarasi secara terpisah. - -Ekspresi untuk _decorator_ pengakses akan dipanggil sebagai fungsi pada waktu proses, dengan tiga argumen berikut: - -1. Bisa memiliki fungsi konstruktor kelas untuk anggota statis, atau prototipe kelas untuk anggota _instance_. -2. Nama anggota. -3. The _Property Descriptor_ untuk anggota. - -> CATATAN  _Property Descriptor_ akan menjadi `undefined`, jika target skripmu dibawah `ES5`. - -Jika aksesor _decorator_ mengembalikan sebuah nilai, ia akan digunakan sebagai _Property Descriptor_ untuk anggota. - -> CATATAN  Nilai yang dikembalikan akan dibiarkan, jika target skripmu dibawah `ES5`. - -Berikut ada contoh penerapan aksesor _decorator_ (`@configurable`) ke anggota kelas _`Point`_: - -```ts -class Point { - private _x: number; - private _y: number; - constructor(x: number, y: number) { - this._x = x; - this._y = y; - } - - @configurable(false) - get x() { - return this._x; - } - - @configurable(false) - get y() { - return this._y; - } -} -``` - -Kita dapat mendefinisikan _decorator_ `@configurable` menggunakan deklarasi fungsi berikut: - -```ts -function configurable(value: boolean) { - return function ( - target: any, - propertyKey: string, - descriptor: PropertyDescriptor - ) { - descriptor.configurable = value; - }; -} -``` - -## _Property Decorators_ - -Sebuah _Property Decorator_ dideklarasikan tepat sebelum deklarasi properti. -_Property Decorator_ tidak dapat digunakan dalam deklarasi berkas, atau dalam konteks ambien lainnya (seperti dalam kelas `declare`). - -Ekspresi untuk properti decorator akan dipanggil sebagai fungsi pada waktu proses, dengan dua argumen berikut: - -1. Dapat berupa fungsi konstruktor kelas untuk anggota statis, atau prototipe kelas untuk anggota _instance_. -2. Nama anggota. - -> CATATAN  _Property Descriptior_ tidak menyediakan sebuah argumen untuk properti _decorator_ karena bergantung tentang bagaimana properti _decorator_ diinisialisasi pada TypeScript. -> Ini karena, saat ini tidak ada mekanisme untuk mendeskripsikan sebuah _instance_ properti ketika mendefinisikan anggota dari sebuah prototipe, dan tidak ada cara untuk mengamati atau memodifikasi _initializer_ untuk properti. Dan nilai kembalian juga akan dibiarkan. -> Sehingga, sebuah properti _decorator_ hanya bisa digunakan untuk mengamati properti dengan nama yang spesifik, yang telah dideklarasikan pada sebuah kelas. - -Kita dapat menggunakan informasi tersebut untuk memantau properti metadata, seperti pada contoh berikut: - -```ts -class Greeter { - @format("Hello, %s") - greeting: string; - - constructor(message: string) { - this.greeting = message; - } - greet() { - let formatString = getFormat(this, "greeting"); - return formatString.replace("%s", this.greeting); - } -} -``` - -Kemudian, kita dapat mendefinisikan _decorator_ `@format` dan fungsi `getFormat` dengan menggunakan deklarasi fungsi berikut: - -```ts -import "reflect-metadata"; - -const formatMetadataKey = Symbol("format"); - -function format(formatString: string) { - return Reflect.metadata(formatMetadataKey, formatString); -} - -function getFormat(target: any, propertyKey: string) { - return Reflect.getMetadata(formatMetadataKey, target, propertyKey); -} -``` - -_Decorator_ `@format("Hello, %s")` disini adalah sebuah [decorator factory](#decorator-factories). -Ketika `@format("Hello, %s")` dipanggil, ia akan menambahkan properti metadata menggunakan fungsi `Reflect.metadata` dari pustaka `reflect-metadata`. -Ketika `getFormat` dipanggil, ia akan membaca format dari nilai _metadata_-nya. - -> CATATAN  Contoh ini membutuhkan pustaka `reflect-metadata`. -> Lihat [Metadata](#metadata) untuk informasi lebih lanjut mengenai pustaka `reflect-metadata`. - -## _Parameter Decorators_ - -_Parameter Decorator_ dideklarasikan tepat sebelum a parameter dideklarasikan. -_Parameter decorator_ diterapkan ke fungsi konstruktor pada kelas atau saat deklarasi _method_. -_Parameter decorator_ tidak dapat digunakan dalam deklarasi berkas, overload, atau dalam konteks ambien lainnya (seperti dalam kelas `declare`). - -Ekspresi untuk _parameter decorator_ akan dipanggil sebagai fungsi pada waktu proses, dengan tiga argumen berikut: - -1. Dapat berupa fungsi konstruktor kelas untuk anggota statis, atau prototipe kelas untuk anggota _instance_. -2. Nama anggota. -3. Indeks ordinal dari parameter dalam daftar parameter fungsi. - -> CATATAN  Sebuah _parameter decorator_ hanya bisa digunakan untuk mengamati sebuah parameter yang telah dideklarasikan pada sebuah method. - -Nilai kembalian dari _parameter decorator_ akan dibiarkan. - -Berikut adalah contoh penggunaan _parameter decorator_ (`@required`) pada anggota kelas `Greeter`: - -```ts -class Greeter { - greeting: string; - - constructor(message: string) { - this.greeting = message; - } - - @validate - greet(@required name: string) { - return "Hello " + name + ", " + this.greeting; - } -} -``` - -Kemudian, kita dapat mendefinisikan _decorator_ `@required` dan `@validate` menggunakan deklarasi fungsi berikut: - -```ts -import "reflect-metadata"; - -const requiredMetadataKey = Symbol("required"); - -function required( - target: Object, - propertyKey: string | symbol, - parameterIndex: number -) { - let existingRequiredParameters: number[] = - Reflect.getOwnMetadata(requiredMetadataKey, target, propertyKey) || []; - existingRequiredParameters.push(parameterIndex); - Reflect.defineMetadata( - requiredMetadataKey, - existingRequiredParameters, - target, - propertyKey - ); -} - -function validate( - target: any, - propertyName: string, - descriptor: TypedPropertyDescriptor -) { - let method = descriptor.value; - descriptor.value = function () { - let requiredParameters: number[] = Reflect.getOwnMetadata( - requiredMetadataKey, - target, - propertyName - ); - if (requiredParameters) { - for (let parameterIndex of requiredParameters) { - if ( - parameterIndex >= arguments.length || - arguments[parameterIndex] === undefined - ) { - throw new Error("Missing required argument."); - } - } - } - - return method.apply(this, arguments); - }; -} -``` - -_Decorator_ `@required` menambahkan entri metadata yang menandakan bahwa parameter tersebut diperlukan. -_Decorator_ `@validate` kemudian akan memvalidasi semua argumen yang ada, sebelum _method_-nya dijalankan. - -> CATATAN  Contoh ini memerlukan pustaka `reflect-metadata` -> Lihat [Metadata](#metadata) untuk informasi lebih lanjut mengenai pustaka `reflect-metadata`. - -## _Metadata_ - -Beberapa contoh menggunakan pustaka `reflect-metadata` yang menambahkan _polyfill_ untuk [API metadata eksperimental](https://github.com/rbuckton/ReflectDecorators). -Pustaka ini belum menjadi bagian dari standar ECMAScript (JavaScript). -Namun, ketika decorator secara resmi diadopsi sebagai bagian dari standar ECMAScript, ekstensi ini akan diusulkan untuk diadopsi. - -Anda dapat memasang pustaka ini melalui npm: - -```shell -npm i reflect-metadata --save -``` - -TypeScript menyertakan dukungan eksperimental untuk menghadirkan jenis _metadata_ tertentu untuk deklarasi yang memiliki _decorator_. -Untuk mengaktifkan dukungan eksperimental ini, Anda harus mengatur opsi kompilator `emitDecoratorMetadata` baik pada baris perintah atau di `tsconfig.json` Anda: - -**_Command Line_**: - -```shell -tsc --target ES5 --experimentalDecorators --emitDecoratorMetadata -``` - -**tsconfig.json**: - -```json tsconfig -{ - "compilerOptions": { - "target": "ES5", - "experimentalDecorators": true, - "emitDecoratorMetadata": true - } -} -``` - -Ketika diaktifkan, selama pustaka `reflect-metadata` di-_import_, informasi jenis _design-time_ tambahan akan diekspos saat _runtime_. - -Kita dapat melihat action pada contoh berikut: - -```ts -import "reflect-metadata"; - -class Point { - x: number; - y: number; -} - -class Line { - private _p0: Point; - private _p1: Point; - - @validate - set p0(value: Point) { - this._p0 = value; - } - get p0() { - return this._p0; - } - - @validate - set p1(value: Point) { - this._p1 = value; - } - get p1() { - return this._p1; - } -} - -function validate( - target: any, - propertyKey: string, - descriptor: TypedPropertyDescriptor -) { - let set = descriptor.set; - descriptor.set = function (value: T) { - let type = Reflect.getMetadata("design:type", target, propertyKey); - if (!(value instanceof type)) { - throw new TypeError("Invalid type."); - } - set.call(target, value); - }; -} -``` - -Kompilator TypeScript akan memasukkan informasi jenis _design-time_ menggunakan _decorator_ `@Reflect.metadata`. -Anda dapat menganggapnya setara dengan TypeScript berikut: - -```ts -class Line { - private _p0: Point; - private _p1: Point; - - @validate - @Reflect.metadata("design:type", Point) - set p0(value: Point) { - this._p0 = value; - } - get p0() { - return this._p0; - } - - @validate - @Reflect.metadata("design:type", Point) - set p1(value: Point) { - this._p1 = value; - } - get p1() { - return this._p1; - } -} -``` - -> CATATAN  _Decorator_ metadata adalah fitur _experimental_ dan mungkin dapat menyebabkan gangguan pada rilis di masa mendatang. diff --git a/packages/documentation/copy/id/reference/Iterators and Generators.md b/packages/documentation/copy/id/reference/Iterators and Generators.md deleted file mode 100644 index 9a7c28dcbb25..000000000000 --- a/packages/documentation/copy/id/reference/Iterators and Generators.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Iterators dan Generators -layout: docs -permalink: /id/docs/handbook/iterators-and-generators.html -oneline: Bagaimana Iterator dan Generator bekerja di TypeScript -translatable: true ---- - -## Iterasi - -Sebuah objek dapat dilakukan perulangan jika memiliki properti [`Symbol.iterator`](Symbols.html#symboliterator). -Beberapa tipe bawaan seperti `Array`, `Map`, `Set`, `String`, `Int32Array`, `Uint32Array`, etc. sudah memiliki properti `Symbol.iterator`. -Fungsi `Symbol.iterator` pada sebuah objek, bertanggungjawab untuk mengembalikan _list_ nilai-nilai untuk menjalankan iterasi. - -## Pernyataan `for..of` - -`for..of` mengulang objek yang dapat diulang dengan cara memanggil properti `Symbol.iterator` pada objek tersebut. -Berikut ini _loop_ `for..of` sederhana pada sebuah _array_: - -```ts -let someArray = [1, "string", false]; - -for (let entry of someArray) { - console.log(entry); // 1, "string", false -} -``` - -### Pernyataan `for..of` vs `for..in` - -Baik pernyataan `for..of` dan `for..in` akan mengiterasi _list_; yang membedakan antara keduanya adalah `for..in` akan mengembalikan daftar _keys_ dari objek tersebut, sedangkan `for..of` mengembalikan daftar _values_ properti numeric dari objek yang diiterasi. - -Berikut adalah contoh implementasi dari perbedaan keduanya: - -```ts -let list = [4, 5, 6]; - -for (let i in list) { - console.log(i); // "0", "1", "2", -} - -for (let i of list) { - console.log(i); // "4", "5", "6" -} -``` - -Perbedaan lainnya adalah `for..in` bekerja pada objek apapun; ini berfungsi sebagai cara untuk memeriksa properti pada objek tersebut. -Di sisi lain, `for..of` tertarik pada nilai dari objek yang dapat diulang. Objek bawaan seperti `Map` dan`Set` mengimplementasikan properti `Symbol.iterator` yang memungkinkan akses ke nilai yang disimpan. - -```ts -let pets = new Set(["Cat", "Dog", "Hamster"]); -pets["species"] = "mammals"; - -for (let pet in pets) { - console.log(pet); // "species" -} - -for (let pet of pets) { - console.log(pet); // "Cat", "Dog", "Hamster" -} -``` - -### Pembuatan kode - -#### Menargetkan ES5 dan ES3 - -Ketika menargetkan ke engine ES5 atau ES3, _iterator_ hanya membolehkan nilai bertipe `Array`. -Akan terjadi galat jika `for..of` melakukan perulangan pada nilai yang bukan Array, bahkan jika nilai non _Array_ tersebut memiliki properti `Symbol.iterator`. - -Kompilator akan menghasilkan perulangan `for` sederhana untuk `for..of`, misalnya: - -```ts -let numbers = [1, 2, 3]; -for (let num of numbers) { - console.log(num); -} -``` - -akan menghasilkan: - -```js -var numbers = [1, 2, 3]; -for (var _i = 0; _i < numbers.length; _i++) { - var num = numbers[_i]; - console.log(num); -} -``` - -#### Menargetkan ECMAScript 2015 dan yang lebih tinggi - -Ketika menargetkan ke _engine_ ECMAScript 2015, kompilator akan membuat perulangan `for..of` untuk menargetkan implementasi _iterator_ bawaan di mesin. diff --git a/packages/documentation/copy/id/reference/JSX.md b/packages/documentation/copy/id/reference/JSX.md deleted file mode 100644 index 8735d3296331..000000000000 --- a/packages/documentation/copy/id/reference/JSX.md +++ /dev/null @@ -1,442 +0,0 @@ ---- -title: JSX -layout: docs -permalink: /id/docs/handbook/jsx.html -oneline: Menggunakan JSX dengan TypeScript -translatable: true ---- - -[JSX](https://facebook.github.io/jsx/) adalah sebuah sintaks tertanam, yang seperti XML. -Ini dimaksudkan untuk diubah menjadi JavaScript yang _valid_, meskipun semantik dari transformasi itu khusus untuk implementasi. -JSX menjadi populer dengan kerangka kerja [React](https://reactjs.org/), tetapi sejak itu juga melihat implementasi lain. -TypeScript mendukung _embeding_, pemeriksaan tipe, dan mengkompilasi JSX secara langsung ke JavaScript. - -## Dasar Penggunaan - -Untuk menggunakan JSX, Anda harus melakukan dua hal berikut: - -1. Penamaan berkas dengan ekstensi `.tsx` -2. Mengaktifkan opsi `jsx` - -TypeScript memiliki tiga jenis mode JSX: `preserve`, `react`, dan `react-native`. -Mode tersebut hanya berlaku untuk _stage_, sedangkan untuk pemeriksaan tipe, hal itu tidak berlaku. -Mode `preserve` akan mempertahankan JSX sebagai bagian dari _output_ untuk selanjutnya digunakan oleh langkah transformasi lain (mis. [Babel](https://babeljs.io/)). -Selain itu, _output_-nya akan memiliki ekstensi berkas `.jsx`. -Mode `react` akan mengeluarkan`React.createElement`, tidak perlu melalui transformasi JSX sebelum digunakan, dan outputnya akan memiliki ekstensi berkas `.js`. -Mode `react-native` sama dengan `pertahankan` yang mempertahankan semua JSX, tetapi hasilnya justru akan memiliki ekstensi berkas `.js`. - -| Mode | Input | Output | Berkas Output Extension | -| -------------- | --------- | ---------------------------- | ----------------------- | -| `preserve` | `
` | `
` | `.jsx` | -| `react` | `
` | `React.createElement("div")` | `.js` | -| `react-native` | `
` | `
` | `.js` | - -Anda dapat menetapkan mode ini menggunakan _flag_ baris perintah `--jsx` atau opsi yang sesuai di berkas [tsconfig.json](/docs/handbook/tsconfig-json.html) Anda. - -> \*Catatan: Anda dapat menentukan fungsi _factory_ JSX yang akan digunakan saat menargetkan react JSX _emit_ dengan opsi `--jsxFactory` (nilai bawaan ke `React.createElement`) - -## Opeartor `as` - -Ingat bagaimana menulis penegasan tipe: - -```ts -var foo = bar; -``` - -Ini menegaskan variabel `bar` memiliki tipe `foo`. -Sejak TypeScript juga menggunakan kurung siku untuk penegasan tipe, mengkombinasikannya dengan sintaks JSX akan menimbulkan kesulitan tertentu. Hasilnya, TypeScript tidak membolehkan penggunaan kurung siku untuk penegasan tipe pada berkas `.tsx`. - -Karena sintaks diatas tidak bisa digunakan pada berkas `.tsx`, maka alternatif untuk penegasan tipe dapat menggunakan operator `as`. -Contohnya dapat dengan mudah ditulis ulang dengan operator `as`. - -```ts -var foo = bar as foo; -``` - -Operator `as` tersedia dikedua jenis berkas, `.ts` dan `.tsx`, dan memiliki perlakuan yang sama seperti penegasan tipe menggunakan kurung siku. - -## Pemeriksaan Tipe - -Urutan yang harus dimengerti mengenai pemeriksaan tipe di JSX, yaitu pertama Anda harus memahami perbedaan antara elemen intrinsik dan elemen berbasiskan nilai. Terdapat sebuah ekspresi `` dan `expr` yang mungkin mengacu pada suatu hal yang intrinsik pada suatu lingkungan (misalnya `div` atau `span` dalam lingkungan DOM) atau pada komponen custom yang telah Anda buat. -Ini penting karena dua alasan berikut: - -1. Untuk React, elemen intrinsik dianggap sebagai string (`React.createElement("div")`), sedangkan komponen yang Anda buat bukan (`React.createElement(MyComponent)`). -2. Type dari atribut yang dilewatkan ke elemen JSX seharusnya terlihat berbeda. - Atribut elemen intrinsik seharusnya diketahui _secara intrinsik_ sedangkan komponen akan seperti ingin untuk menentukan kumpulan atribut mereka sendiri. - -TypeScript menggunakan [beberapa convention yang dengan React](http://facebook.github.io/react/docs/jsx-in-depth.html#html-tags-vs.-react-components) untuk membedakannya. -Elemen intrinsik selalu dimulai dengan huruf kecil, dan elemen berbasiskan nilai selalu dimulai dengan huruf besar. - -## Elemen intrinsik - -Elemen intrinsik dicari pada _interface_ khusus, yaitu `JSX.IntrinsicElements`. -Standarnya, jika _interface_ ini tidak ditentukan, maka apapun yang terjadi dan elemen intrinsik tidak akan diperiksa tipenya. -Namun, jika _interface_ ini ada, maka nama elemen intrinsik akan dicari sebagai properti di _interface_ `JSX.IntrinsicElements`. -Contohnya: - -```ts -declare namespace JSX { - interface IntrinsicElements { - foo: any; - } -} - -; // ok -; // galat -``` - -Pada contoh diatas, `` akan berjalan dengan baik, tapi `` akan menghasilkan galat, karena `` tidak ditentukan pada _interface_ `JSX.IntrinsicElements`. - -> Catatan: Anda juga bisa menentukan _indexer_ untuk mendapatkan seluruh elemen bertipe string didalam `JSX.IntrinsicElements`, seperti berikut: - -```ts -declare namespace JSX { - interface IntrinsicElements { - [elemName: string]: any; - } -} -``` - -## Elemen Berbasiskan Nilai - -Elemen berbasiskan nilai akan dicari oleh _identifier_ yang ada pada sebuah _scope_. - -```ts -import MyComponent from "./myComponent"; - -; // ok -; // galat -``` - -Terdapat dua cara untuk mendefinisikan sebuah elemen berbasiskan nilai, yaitu: - -1. _Function Component_ (FC) -2. _Class Component_ - -Karena kedua jenis elemen berbasis nilai ini tidak dapat dibedakan satu sama lain dalam ekspresi JSX, maka pertama TS akan mencoba menyelesaikan ekspresi tersebut sebagai _Function Component_ menggunakan _overloading_. Jika proses berhasil, maka TS selesai menyelesaikan ekspresi ke deklarasinya. Jika gagal untuk menyelesaikan sebagai _Function Component_, maka TS kemudian akan mencoba untuk menyelesaikannya sebagai _Class Component_. Jika gagal, TS akan melaporkan kesalahan. - -### _Function Component_ - -Seperti namanya, komponen ini didefinisikan menggunakan fungsi JavaScript dimana argumen pertamanya adalah sebuah `props` objek. -TS memberlakukan bahwa tipe kembaliannya harus dapat diberikan ke `JSX.Element`. - -```ts -interface FooProp { - name: string; - X: number; - Y: number; -} - -declare function AnotherComponent(prop: {name: string}); -function ComponentFoo(prop: FooProp) { - return ; -} - -const Button = (prop: {value: string}, context: { color: string }) => -
- ); -}; - -// React dan TypeScript merupakan topik yang sangat luas -// namun memiliki dasar yang sederhana: TypeScript mendukung -// JSX dan sisanya ditangani oleh tipe-tipe data milik -// React dari Definitely Typed. - -// Anda dapat mempelajari lebih lanjut tentang cara menggunakan -// React dengan TypeScript melalui situs web berikut: -// -// https://github.com/typescript-cheatsheets/react-typescript-cheatsheet -// https://egghead.io/courses/use-typescript-to-develop-react-applications -// https://levelup.gitconnected.com/ultimate-react-component-patterns-with-typescript-2-8-82990c516935 diff --git a/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Web.js b/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Web.js deleted file mode 100644 index eb2901a7d615..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with Web.js +++ /dev/null @@ -1,90 +0,0 @@ -//// { order: 0, isJavaScript: true } - -// DOM (_Document Object Model_) merupakan API dasar ketika -// ingin bekerja dengan sebuah halaman web, dan TypeScript -// memiliki dukungan yang baik untuk API tersebut. - -// Mari kita buat sebuah _popover_ untuk tampil ketika -// Anda menekan tombol "Run" pada _toolbar_ di atas. - -const popover = document.createElement("div"); -popover.id = "example-popover"; - -// Perhatikan bahwa tipe data _popover_ disimpulkan dengan tepat -// menjadi sebuah HTMLDivElement karena kita memberikan elemen "div" -// secara spesifik. - -// Supaya kode program dapat dijalankan kembali, kita akan -// membuat sebuah fungsi untuk menghapus _popover_ jika -// _popover_ sudah ada pada halaman web. - -const hapusPopover = () => { - const popoverYangSudahAda = document.getElementById(popover.id); - if (popoverYangSudahAda && popoverYangSudahAda.parentElement) { - popoverYangSudahAda.parentElement.removeChild(existingPopover); - } -}; - -// Sekarang, panggil fungsi tersebut. - -hapusPopover(); - -// Kita dapat mengatur _inline styles_ pada elemen -// melalui properti `.style` pada sebuah HTMLElement -// - seluruh properti tersebut memiliki definisi tipe data. - -popover.style.backgroundColor = "#0078D4"; -popover.style.color = "white"; -popover.style.border = "1px solid black"; -popover.style.position = "fixed"; -popover.style.bottom = "10px"; -popover.style.left = "20px"; -popover.style.width = "200px"; -popover.style.height = "100px"; -popover.style.padding = "10px"; - -// Termasuk atribut CSS yang kurang dikenal atau sudah -// tidak didukung lagi. -popover.style.webkitBorderRadius = "4px"; - -// Untuk menambahkan konten pada _popover_, kita akan -// menambahkan sebuah elemen paragraf dan menggunakan -// elemen tersebut untuk menambahkan beberapa teks. - -const pesan = document.createElement("p"); -pesan.textContent = "Ini adalah contoh popover"; - -// Dan kita juga akan menambahkan sebuah tombol -// untuk menutup _popover_. - -const tombolTutup = document.createElement("a"); -tombolTutup.textContent = "X"; -tombolTutup.style.position = "absolute"; -tombolTutup.style.top = "3px"; -tombolTutup.style.right = "8px"; -tombolTutup.style.color = "white"; - -tombolTutup.onclick = () => { - hapusPopover(); -}; - -// Lalu tambahkan seluruh elemen di atas pada halaman web. -popover.appendChild(pesan); -popover.appendChild(tombolTutup); -document.body.appendChild(popover); - -// Apabila Anda menekan tombol "Run" di atas, maka sebuah _popup_ -// seharusnya muncul pada bagian kiri bawah penjelajah web, -// yang Anda dapat tutup dengan menekan "x" yang ada pada -// bagian kanan atas dari _popup_. - -// Contoh ini menunjukkan bagaimana Anda dapat menggunakan -// API DOM pada JavaScript - namun juga menggunakan TypeScript -// untuk menyediakan dukungan perkakas yang baik. - -// Ada sebuah contoh lain yang lebih luas tentang dukungan -// perkakas TypeScript dengan WebGL yang dapat dilihat di sini: -// example:typescript-with-webgl - -// There is an extended example for TypeScript tooling with -// WebGL available here: example:typescript-with-webgl diff --git a/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with WebGL.js b/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with WebGL.js deleted file mode 100644 index 9d11b0cb087f..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/External APIs/TypeScript with WebGL.js +++ /dev/null @@ -1,291 +0,0 @@ -//// { order: 5, isJavaScript: true } - -// Di bawah ini merupakan contoh pembuata sebuah kanvas HTML -// yang menggunakan WebGL untuk menghasilkan _confetti_ yang -// berputar menggunakan JavaScript. Kita akan menelusuri kode -// program untuk mengerti bagaimana program bekerja, dan melihat -// bagaimana perkakas TypeScript menyediakan fitur yang berguna. - -// Contoh ini dibangun berdasarkan: example:working-with-the-dom - -// Pertama, kita harus membuat sebuah elemen `canvas`, yang -// kita buat menggunakan API DOM dan menetapkan beberapa -// _inline styles_: - -const canvas = document.createElement("canvas") -canvas.id = "spinning-canvas" -canvas.style.backgroundColor = "#0078D4" -canvas.style.position = "fixed" -canvas.style.bottom = "10px" -canvas.style.right = "20px" -canvas.style.width = "500px" -canvas.style.height = "400px" - -// Selanjutnya, untuk mempermudah perubahan, kita akan menghapus -// kanvas versi lama dengan ketika menekan tombol "Run" - sekarang -// Anda dapat membuat perubahan dan melihat perubahan tersebut -// ketika Anda menekan tombol "Run" atau (`cmd + enter`): - -const kanvasYangSudahAda = document.getElementById(canvas.id) -if (kanvasYangSudahAda && kanvasYangSudahAda.parentElement) { - kanvasYangSudahAda.parentElement.removeChild(kanvasYangSudahAda) -} - -// Perintahkan elemen kanvas untuk menggunakan WebGL ketika akan -// menggambar dalam elemen (dan jangan gunakan mesin _raster_ anggapan): - -const gl = canvas.getContext("webgl") - -// Selanjutnya, kita perlu untuk membuat _vertex shaders_ - sederhananya, -// _vertex shaders_ adalah program kecil yang menerapkan fungsi matematika -// pada sekumpulan titik (bilangan). - -// Anda dapat melihat banyak atribut di atas _shader_, atribut-atribut -// tersebut akan diteruskan pada _shader_ hasil kompilasi pada -// bagian bawah contoh. - -// Anda dapat melihat gambaran umum tentang bagaimana WebGL bekerja -// melalui: -// https://webglfundamentals.org/webgl/lessons/webgl-how-it-works.html - -const vertexShader = gl.createShader(gl.VERTEX_SHADER) -gl.shaderSource( - vertexShader, - ` -precision lowp float; - -attribute vec2 a_position; // Flat square on XY plane -attribute float a_startAngle; -attribute float a_angularVelocity; -attribute float a_rotationAxisAngle; -attribute float a_particleDistance; -attribute float a_particleAngle; -attribute float a_particleY; -uniform float u_time; // Global state - -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - float angle = a_startAngle + a_angularVelocity * u_time; - float vertPosition = 1.1 - mod(u_time * .25 + a_particleY, 2.2); - float viewAngle = a_particleAngle + mod(u_time * .25, 6.28); - - mat4 vMatrix = mat4( - 1.3, 0.0, 0.0, 0.0, - 0.0, 1.3, 0.0, 0.0, - 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 0.0, 1.0 - ); - - mat4 shiftMatrix = mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - a_particleDistance * sin(viewAngle), vertPosition, a_particleDistance * cos(viewAngle), 1.0 - ); - - mat4 pMatrix = mat4( - cos(a_rotationAxisAngle), sin(a_rotationAxisAngle), 0.0, 0.0, - -sin(a_rotationAxisAngle), cos(a_rotationAxisAngle), 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0 - ) * mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, cos(angle), sin(angle), 0.0, - 0.0, -sin(angle), cos(angle), 0.0, - 0.0, 0.0, 0.0, 1.0 - ); - - gl_Position = vMatrix * shiftMatrix * pMatrix * vec4(a_position * 0.03, 0.0, 1.0); - vec4 normal = vec4(0.0, 0.0, 1.0, 0.0); - vec4 transformedNormal = normalize(pMatrix * normal); - - float dotNormal = abs(dot(normal.xyz, transformedNormal.xyz)); - float regularLighting = dotNormal / 2.0 + 0.5; - float glanceLighting = smoothstep(0.92, 0.98, dotNormal); - v_color = vec3( - mix((0.5 - transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting), - mix(0.5 * regularLighting, 1.0, glanceLighting), - mix((0.5 + transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting) - ); - - v_position = a_position; - v_overlight = 0.9 + glanceLighting * 0.1; -} -` -) -gl.compileShader(vertexShader) - -// Contoh ini juga menggunakan _fragment shader_ - sebuah -// _fragment shader_ adalah program kecil yang berjalan -// di seluruh piksel dalam kanvas dan menetapkan warna bagi -// piksel. - -// Dalam kasus ini, apabila Anda mencoba masukan lain, Anda dapat -// melihat bahwa masukan tersebut mempengaruhi pencahayaan pada -// layar, dan juga _border radius_ dari _confetti_: - -const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER) -gl.shaderSource( - fragmentShader, - ` -precision lowp float; -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - gl_FragColor = vec4(v_color, 1.0 - smoothstep(0.8, v_overlight, length(v_position))); -} -` -) -gl.compileShader(fragmentShader) - -// Ambil _shader-shader_ yang telah dikompilasi dan -// tambahkan _shader-shader_ tersebut ke dalam konteks -// kanvas WebGL sehingga dapat digunakan: - -const shaderProgram = gl.createProgram() -gl.attachShader(shaderProgram, vertexShader) -gl.attachShader(shaderProgram, fragmentShader) -gl.linkProgram(shaderProgram) -gl.useProgram(shaderProgram) - -gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()) - -// Kita butuh kemampuan untuk menetapkan atau memperoleh -// variabel masukan pada _shader_ dengan cara yang aman -// secara memori, sehingga urutan dan panjang dari nilai-nilai -// harus disimpan. -const attrs = [ - { name: "a_position", length: 2, offset: 0 }, // contoh: x dan y membutuhkan dua tempat di memori - { name: "a_startAngle", length: 1, offset: 2 }, // namun, _angle_ hanya membutuhkan satu tempat di memori - { name: "a_angularVelocity", length: 1, offset: 3 }, - { name: "a_rotationAxisAngle", length: 1, offset: 4 }, - { name: "a_particleDistance", length: 1, offset: 5 }, - { name: "a_particleAngle", length: 1, offset: 6 }, - { name: "a_particleY", length: 1, offset: 7 } -] - -const STRIDE = Object.keys(attrs).length + 1 - -// Lakukan _looping_ pada seluruh atribut yang diketahui dan buat _pointer_ -// di memori supaya JavaScript dapat mengisi atribut-atribut -// tersebut pada _shader_. - -// Berikut merupakan sedikit penjelasan mengenai API ini: -// WebGL merupakan teknologi yang berbasis pada OpenGL yang -// merupakan sebuah API dengan gaya _state-machine_. Anda -// dapat meneruskan perintah dalam urutan tertentu untuk -// mengeluarkan sesuatu pada layar. - -// Sehingga, WebGL biasanya tidak bekerja dengan cara meneruskan -// seluruh objek pada setiap pemanggilan API WebGL, namun meneruskan -// satu objek pada sebuah fungsi, kemudian meneruskan objek lain -// pada fungsi selanjutnya. Sehingga, di sini kita memerintahkan WebGL -// untuk membuat sebuah _array vertex pointer_: - -for (var i = 0; i < attrs.length; i++) { - const name = attrs[i].name - const length = attrs[i].length - const offset = attrs[i].offset - const attribLocation = gl.getAttribLocation(shaderProgram, name) - gl.vertexAttribPointer(attribLocation, length, gl.FLOAT, false, STRIDE * 4, offset * 4) - gl.enableVertexAttribArray(attribLocation) -} - -// Kemudian pada baris ini, kumpulan _vertex pointer_ tersebut -// terikat pada sebuah _array_ dalam memori: - -gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()) - -// Tetapkan beberapa konstanta yang akan digunakan pada proses _rendering_: - -const NUM_PARTICLES = 200 -const NUM_VERTICES = 4 - -// Coba kurangi nilai ini dan jalankan program kembali, -// nilai ini menentukan banyaknya titik yang ada -// pada setiap _confetti_ dan nilai ganjil akan -// mengacaukan _confetti_ yang ditampilkan. - -const NUM_INDICES = 6 - -// Buat _array_ masukan untuk kumpulan _vertex shader_ -const vertices = new Float32Array(NUM_PARTICLES * STRIDE * NUM_VERTICES) -const indices = new Uint16Array(NUM_PARTICLES * NUM_INDICES) - -for (let i = 0; i < NUM_PARTICLES; i++) { - const axisAngle = Math.random() * Math.PI * 2 - const startAngle = Math.random() * Math.PI * 2 - const groupPtr = i * STRIDE * NUM_VERTICES - - const particleDistance = Math.sqrt(Math.random()) - const particleAngle = Math.random() * Math.PI * 2 - const particleY = Math.random() * 2.2 - const angularVelocity = Math.random() * 2 + 1 - - for (let j = 0; j < 4; j++) { - const vertexPtr = groupPtr + j * STRIDE - vertices[vertexPtr + 2] = startAngle // Sudut awal - vertices[vertexPtr + 3] = angularVelocity // Kecepatan sudut - vertices[vertexPtr + 4] = axisAngle // Perbedaan arah - vertices[vertexPtr + 5] = particleDistance // Jarak partikel yang dihitung dari titik (0, 0, 0) - vertices[vertexPtr + 6] = particleAngle // Arah berdasarkan sumbu Y - vertices[vertexPtr + 7] = particleY // Arah berdasarkan sumbu Y - } - - // Koordinat - vertices[groupPtr] = vertices[groupPtr + STRIDE * 2] = -1 - vertices[groupPtr + STRIDE] = vertices[groupPtr + STRIDE * 3] = +1 - vertices[groupPtr + 1] = vertices[groupPtr + STRIDE + 1] = -1 - vertices[groupPtr + STRIDE * 2 + 1] = vertices[groupPtr + STRIDE * 3 + 1] = +1 - - const indicesPtr = i * NUM_INDICES - const vertexPtr = i * NUM_VERTICES - indices[indicesPtr] = vertexPtr - indices[indicesPtr + 4] = indices[indicesPtr + 1] = vertexPtr + 1 - indices[indicesPtr + 3] = indices[indicesPtr + 2] = vertexPtr + 2 - indices[indicesPtr + 5] = vertexPtr + 3 -} - -// Teruskan data pada konteks WebGL -gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) -gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - - -const timeUniformLocation = gl.getUniformLocation(shaderProgram, "u_time") -const startTime = (window.performance || Date).now() - -// Awali warna latar dengan warna hitam -gl.clearColor(0, 0, 0, 1) - -// Nyalakan _alpha channel_ pada _vertex shader_ -gl.enable(gl.BLEND) -gl.blendFunc(gl.SRC_ALPHA, gl.ONE) - -// Tetapkan ukuran konteks WebGL sebesar ukuran kanvas -gl.viewport(0, 0, canvas.width, canvas.height) - - // Buat sebuah _run-loop_ untuk menggambar seluruh _confetti_ - ; (function frame() { - gl.uniform1f(timeUniformLocation, ((window.performance || Date).now() - startTime) / 1000) - - gl.clear(gl.COLOR_BUFFER_BIT) - gl.drawElements( - gl.TRIANGLES, - NUM_INDICES * NUM_PARTICLES, - gl.UNSIGNED_SHORT, - 0 - ) - requestAnimationFrame(frame) - })() - -// Tambahkan elemen kanvas yang baru pada bagian -// kiri bawah dari arena bermain -document.body.appendChild(canvas) - -// Dibuat berdasarkan JSFiddle biatan Subzey -// https://jsfiddle.net/subzey/52sowezj/ diff --git a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Function Chaining.ts b/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Function Chaining.ts deleted file mode 100644 index 04045814bfd0..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Function Chaining.ts +++ /dev/null @@ -1,84 +0,0 @@ -//// { order: 2, compiler: { esModuleInterop: true } } - -// Fungsi berantai merupakan sebuah pola pemrograman -// yang umum digunakan di JavaScript, yang dapat membuat -// kode program Anda lebih terfokus karena nilai penengah -// yang lebih sedikit dan lebih mudah dibaca karena kualitas -// penyarangan yang dimiliki fungsi berantai. - -// Sebuah API yang sangat umum yang bekerja menggunakan -// fungsi berantai adalah jQuery. Di bawah ini merupakan -// sebuah contoh penggunaan jQuery dengan tipe data -// dari DefinitelyTyped: - -import $ from "jquery"; - -// Berikut merupakan sebuah contoh penggunaan API jQuery: - -$("#navigasi").css("background", "red").height(300).fadeIn(200); - -// Jika Anda menambahkan sebuah titik pada baris kode di atas, -// Anda akan melihat daftar fungsi yang panjang. Pola pemrograman ini -// mudah diimplementasikan di JavaScript. Kuncinya adalah -// memastikan bahwa Anda selalu mengembalikan objek yang sama. - -// Berikut merupakan contoh sebuah API yang membentuk -// sebuah rantai API. Kuncinya adalah mempunya sebuah -// fungsi luar yang menyimpan keadaan internal, dan -// sebuah objek yang mengekspos API yang selalu dikembalikan. - -const jumlahkanDuaBilangan = (mulai = 1) => { - let n = mulai; - - const api = { - // Implementasikan seluruh fungsi pada API Anda. - tambah(inc: number = 1) { - n += inc; - return api; - }, - - cetak() { - console.log(n); - return api; - }, - }; - return api; -}; - -// Penulisan tersebut memiliki gaya API yang sama -// seperti yang sudah kita lihat pada jQuery: - -jumlahkanDuaBilangan(1).tambah(3).tambah().cetak().tambah(1); - -// Berikut merupakan sebuah contoh implementasi fungsi berantai] -// menggunakan kelas: - -class TambahBilangan { - private n: number; - - constructor(mulai = 0) { - this.n = mulai; - } - - public tambah(inc = 1) { - this.n = this.n + inc; - return this; - } - - public cetak() { - console.log(this.n); - return this; - } -} - -// Berikut merupakan cara penggunaan kelas tersebut: - -new TambahBilangan(2).tambah(3).tambah().cetak().tambah(1); - -// Contoh-contoh pada bagian ini menggunakan fitur -// penyimpulan tipe data TypeScript untuk menyediakan -// perkakas TypeScript pada pola pemrograman JavaScript. - -// For more examples on this: -// -// - example:code-flow diff --git a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Generic Functions.ts b/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Generic Functions.ts deleted file mode 100644 index 16429f7aada0..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Generic Functions.ts +++ /dev/null @@ -1,120 +0,0 @@ -// Tipe data generik menyediakan sebuah cara untuk menggunakan tipe -// data sebagai sebuah variabel dalam tipe data lain, yaitu -// meta. - -// Kami akan berusaha membuat contoh ini sesederhana mungkin, -// Anda dapat melakukan banyak hal dengan tipe data generik dan -// kemungkinan suatu saat Anda akan melihat kode program yang -// sangat rumit yang memanfaatkan tipe data generik - namun hal -// tersebut tidak berarti bahwa tipe data generik merupakan sesuatu -// yang rumit. - -// Mari kita mulai dengan sebuah contoh dimana kita akan -// membungkus sebuah objek input dalam sebuah _array_. Kita -// hanya akan mengamati satu variabel pada contoh ini, -// yaitu tipe data yang diteruskan: - -function bungkusDalamArray(input: Tipe): Tipe[] { - return [input]; -} - -// Catatan: biasanya kita melihat `Tipe` ditulis sebagai `T`. -// Hal tersebut merupakan kebiasaan yang mirip dengan bagaimana -// orang menggunakan `i` dalam sebuah perulangan `for` untuk -// merepresentasikan indeks. `T` biasanya merepresentasikan `Tipe`, -// sehingga kami akan menuliskan dengan lengkap demi -// kejelasan kode program. - -// Fungsi yang kita buat akan menggunakan fitur penyimpulan -// tipe data supaya dapat menjamin tipe data yang -// diteruskan pada fungsi akan selalu sama dengan tipe -// data yang dikembalikan oleh fungsi tersebut (walaupun -// tipe data tersebut akan dibungkus dalam sebuah _array_). - -const arrayString = bungkusDalamArray("hello generics"); -const arrayBilangan = bungkusDalamArray(123); - -// Kita dapat membuktikan bahwa jaminan tersebut -// bekerja sesuai keinginan dengan memeriksa apakah -// kita dapat menetapkan sebuah _array string_ pada sebuah -// fungsi yang seharusnya merupakan sebuah _array_ objek: -const bukanArrayString: string[] = bungkusDalamArray({}); - -// Anda juga dapat melewati penyimpulan tipe data generik -// dengan menambahkan tipe data: -const arrayStringKedua = bungkusDalamArray(""); - -// `bungkusDalamArray` memperbolehkan penggunaan semua -// tipe data, namun ada beberapa masalah dimana Anda ingin -// bahwa hanya beberapa tipe data dan turunannya yang diperbolehkan. -// Untuk mengatasi masalah tersebut, Anda dapat menetapkan -// bahwa tipe data generik harus merupakan turunan dari tipe -// data tertentu. - -interface Drawable { - gambar: () => void; -} - -// Fungsi ini menerima sekumpulan objek yang memiliki -// fungsi untuk menggambar pada layar. -function gambarPadaLayar(input: Tipe[]) { - input.forEach((i) => i.gambar()); -} - -const objekDenganGambar = [{ gambar: () => { } }, { gambar: () => { } }]; -gambarPadaLayar(objekDenganGambar); - -// Fungsi tersebut akan gagal dipanggil -// apabila salah satu objek tidak memiliki -// fungsi `gambar`: - -gambarPadaLayar([{}, { gambar: () => { } }]); - -// Tipe data generik akan mulai terlihat rumit ketika Anda -// memiliki banyak variabel. Berikut merupakan sebuah -// contoh sebuah fungsi _caching_ yang memperbolehkan -// Anda untuk memiliki sekumpulan tipe data input dan -// _cache_. - -interface CacheHost { - simpan: (a: any) => void; -} - -function simpanObjekDalamCache(obj: Tipe, cache: Cache): Cache { - cache.simpan(obj); - return cache; -} - -// Contoh tersebut merupakan contoh yang sama seperti -// contoh sebelumnya, namun memiliki sebuah parameter tambahan. -// Catatan: supaya fungsi tersebut dapat dijalankan, kita harus -// menggunakan tipe data `any`. Hal tersebut dapat diatasi -// menggunakan antar muka generik. - -interface CacheHostGenerik { - simpan: (a: TipeKonten) => void; -} - -// Sekarang ketika `CacheHostGeneric` digunakan, Anda -// harus menetapkan `TipeKonten`. - -function simpanObjekBertipeDataPadaCache>(obj: Type, cache: Cache): Cache { - cache.simpan(obj); - return cache; -} - -// Contoh-contoh di atas sudah menjelaskan sintaks tipe data generik -// secara sekilas. Namun, tipe data generik mampu memastikan bahwa -// kode program yang Anda buat lebih aman. Hal tersebut merupakan -// kompromi, bahwa Anda memiliki lebih banyak pengetahuan sekarang. -// Ketika Anda menyediakan API untuk orang lain, tipe data generik -// menyediakan sebuah cara yang fleksibel yang memperbolehkan -// orang lain untuk menggunakan tipe data mereka sendiri -// dengan dukungan fitur penyimpulan tipe data. - -// Anda dapat melihat contoh-contoh lain tentang tipe data generik -// dengan kelas dan antar muka melalui: -// -// example:advanced-classes -// example:typescript-with-react -// https://www.typescriptlang.org/docs/handbook/generics.html diff --git a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Typing Functions.ts b/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Typing Functions.ts deleted file mode 100644 index 3d0166d286ff..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Functions with JavaScript/Typing Functions.ts +++ /dev/null @@ -1,150 +0,0 @@ -// Fitur penyimpulan tipe data yang dimiliki TypeScript -// dapat meningkatkan kemampuan Anda secara drastis, namun -// terdapat banyak cara lain untuk mendokumentasikan -// fungsi Anda dengan lebih rinci. - -// Salah satu titik awal yang baik adalah parameter opsional, -// yang merupakan sebuah cara untuk memberitahu orang lain -// bahwa Anda tidak wajib untuk meneruskan parameter. - -let i = 0; -const tambahkanIndeks = (nilai?: number) => { - i += nilai === undefined ? 1 : nilai; -}; - -// Fungsi tersebut dapat dipanggil dengan cara: - -tambahkanIndeks(); -tambahkanIndeks(0); -tambahkanIndeks(3); - -// Anda dapat menjadikan fungsi sebagai parameter, dimana -// hal tersebut menyediakan fitur penyimpulan tipe data -// ketika Anda menulis fungsi tersebut. - -const callbackDenganIndeks = (callback: (i: number) => void) => { - callback(i); -}; - -// Menyisipkan antar muka fungsi dapat menyebabkan kode program -// sulit dibaca. Menggunakan fitur alias pada tipe data akan -// memperbolehkan Anda memberi nama pada parameter fungsi yang diteruskan. - -type callbackBilangan = (i: number) => void; -const callbackDenganIndeks2 = (callback: callbackBilangan) => { - callback(i); -}; - -// Fungsi tersebut dapat dipanggil seperti berikut: - -callbackDenganIndeks(index => { - console.log(index); -}); - -// Dengan menyorot indeks di atas, Anda dapat melihat bagaimana -// TypeScript telah menyimpulkan indeks sebagai angka dengan tepat. - -// Penyimpulan tipe data TypeScript juga dapat dijalankan ketika -// meneruskan sebuah fungsi sebagai sebuah _reference_. Untuk -// menunjukkan hal tersebut, kita akan menggunakan sebuah fungsi -// yang mengubah sebuah angka menjadi sebuah _string_: - -const angkaKeString = (n: number) => { - return n.toString(); -}; - -// Fungsi tersebut dapat digunakan pada `map` dalam sebuah -// _array_ untuk mengubah seluruh angka menjadi sebuah sebuah -// _string_. Jika Anda menyorot `angkaSebagaiString` di bawah ini, -// Anda dapat melihat tipe data yang diharapkan. -const angkaSebagaiString = [1, 4, 6, 10].map(i => angkaKeString(i)); - -// Kita dapat menyingkat penulisan kode program dengan -// langsung meneruskan fungsi dan mendapatkan hasil yang sama -// namun dengan kode program yang lebih terfokus: -const angkaSebagaiStringTerse = [1, 4, 6, 10].map(angkaKeString); - -// Anda bisa saja memiliki fungsi yang mampu menerima banyak -// tipe data sekaligus, namun Anda hanya tertarik pada beberapa -// atribut. Kasus tersebut merupakan contoh kasus yang berguna -// untuk _indexed signatures_ pada tipe data. Tipe data di bawah -// ini mendeklarasikan bahwa fungsi ini dapat dipanggil -// menggunakan objek apapun selama objek tersebut memiliki -// atribut `nama`: - -interface SeluruhObjekBernama { - nama: string; - [key: string]: any; -} - -const cetakNama = (input: SeluruhObjekBernama) => { }; - -cetakNama({ nama: "joey" }); -cetakNama({ nama: "joey", umur: 23 }); - -// Apabila Anda ingin mempelajari mengenai _index-signatures_ -// kami merekomendasikan: -// -// https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks -// https://basarat.gitbooks.io/typescript/docs/types/index-signatures.html - -// Anda juga dapat memperbolehkan perilaku TypeScript -// seperti ini dimanapun dengan menyetel `suppressExcessPropertyError` -// pada `tsconfig` - namun, orang lain tidak dapat mengetahui -// hal tersebut apabila API ini dimatikan. - -// Fungsi dalam JavaScript dapat menerima berbagai parameter. -// Terdapat dua cara yang umum digunakan untuk mendeskripsikan -// hal tersebut: tipe data gabungan untuk kembalian / masukan, dan -// _function overload_. - -// Menggunakan tipe data gabungan pada parameter Anda merupakan -// pilihan yang masuk akal apabila hanya ada satu atau dua perubahan -// dan dokumentasi kode program tidak perlu diubah apabila fungsi -// berubah. - -const fungsiBooleanAtauAngka = (input: boolean | number) => { }; - -fungsiBooleanAtauAngka(true); -fungsiBooleanAtauAngka(23); - -// Namun, _function overload_ menyediakan sintaks -// yang lebih luas untuk parameter dan tipe data kembalian. -interface fungsiBooleanAtauAngkaAtauString { - /** Menerima sebuah boolean, mengembalikan sebuah boolean */ - (input: boolean): boolean; - /** Menerima sebuah angka, mengembalikan sebuah angka */ - (input: number): number; - /** Menerima sebuah _string_, mengembalikan sebuah _string_ */ - (input: string): boolean; -} - -// Apabila ini merupakan kali pertama Anda melihat `declare`, -// `declare` memperbolehkan Anda untuk memberi tahu TypeScript -// bahwa sesuatu memang ada walaupun benda tersebut tidak -// ada pada waktu eksekusi berkas ini. Hal tersebut berguna -// untuk memetakan kode program yang memiliki efek samping -// namun sangat berguna pada saat demonstrasi program -// yang membutuhkan banyak kode program untuk mengimplementasikannya. - -declare const fungsiBooleanAtauAngkaAtauString: fungsiBooleanAtauAngkaAtauString; - -const nilaiBoolean = fungsiBooleanAtauAngkaAtauString(true); -const nilaiAngka = fungsiBooleanAtauAngkaAtauString(12); -const nilaiBoolean2 = fungsiBooleanAtauAngkaAtauString("string"); - -// Apabila Anda menyorot nilai-nilai di atas dan fungsinya, Anda -// dapat melihat dokumentasi yang tepat beserta dengan -// tipe data kembaliannya. - -// Menggunakan _function overload_ dapat meningkatkan kemampuan -// Anda secara drastis, namun ada perkakas lain yang dapat -// digunakan untuk tipe data masukan dan kembalian yang berbeda, -// yaitu tipe data generik. - -// Contoh ini menyediakan sebuah cara bagi Anda untuk -// menetapkan tipe data sebagai variabel sementara -// pada deklarasi tipe data. - -// example:generic-functions -// example:function-chaining diff --git a/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Errors.ts b/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Errors.ts deleted file mode 100644 index 90ae3e14d2d2..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Errors.ts +++ /dev/null @@ -1,44 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// TypeScript secara bawaan tidak memeriksa galat -// yang ada dalam kode JavaScript. Sebaliknya, perkakas -// TypeScript difokuskan untuk memberikan banyak dukungan -// pada editor. - -// Namun, mengaktifkan fitur pemeriksaan galat merupakan hal -// yang cukup mudah untuk dilakukan. Pada sebuah berkas -// JavaScript biasa, cukup tambahkan komentar berikut -// untuk mengaktifkan fitur pemeriksaan galat TypeScript: - -// @ts-check - -let stringku = "123"; -stringku = {}; - -// Fitur tersebut mungkin akan menambahkan banyak coretan merah -// di dalam berkas JavaScript Anda. Ketika masih bekerja dalam -// JavaScript, Anda memiliki beberapa perkakas untuk memperbaiki -// galat-galat tersebut. - -// Untuk beberapa galat yang rumit, dimana Anda menganggap -// bahwa perubahan kode program harus dilakukan, Anda dapat -// menggunakan anotasi JSDoc untuk menetapkan tipe data -// yang seharusnya pada TypeScript: - -/** @type {string | {}} */ -let stringAtauObjekku = "123"; -stringAtauObjekku = {}; - -// Dimana hal tersebut dapat Anda pelajari lebih lanjut di: -// example:jsdoc-support - -// Anda dapat mendeklarasikan kegagalan yang tidak penting dengan -// memerintahkan TypeScript untuk mengabaikan galat selanjutnya: - -let galatkuYangDiabaikan = "123"; -// @ts-ignore -galatkuYangDiabaikan = {}; - -// Anda dapat menggunakan fitur menyimpulkan tipe data -// melalui alur kode program untuk membuat perubahan -// pada kode JavaScript Anda: example:code-flow diff --git a/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Quick Fixes.ts b/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Quick Fixes.ts deleted file mode 100644 index 0f5ae1d46aaf..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Helping with JavaScript/Quick Fixes.ts +++ /dev/null @@ -1,16 +0,0 @@ -// TypeScript menyediakan rekomendasi perbaikan cepat -// untuk kejadian umum. _Prompt_ akan muncul di editor -// Anda berdasarkan rekomendasi-rekomendasi tersebut. - -// Sebagai contoh, TypeScript dapat menyediakan perbaikan -// cepat untuk kesalahan eja pada tipe data Anda: - -const bilanganEuler = 2.7182818284; -bilanganEuler.toStrang(); -// ^______^ - pilih kode ini untuk melihat lampu bohlam. - -class ContohKelas { - method() { - this.tidakDideklarasikan = 10; - } -} diff --git a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Code Flow.ts b/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Code Flow.ts deleted file mode 100644 index 5a433facd4fa..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Code Flow.ts +++ /dev/null @@ -1,67 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -//// {order: 3, compiler: {strictNullChecks: true}} - -// Bagaimana kode mengalir di dalam file JavaScript dapat mempengaruhi -// tipe data di seluruh program kita. - -const users = [{ name: "Ahmed" }, { name: "Gemma" }, { name: "Jon" }]; - -// Kita akan melihat apakah kita dapat menemukan pengguna bernama "jon". -const jon = users.find(u => u.name === "jon"); - -// Dalam kasus di atas, 'find' bisa gagal. Dalam hal ini kita -// tidak memiliki objek. Ini menghasilkan sebuah tipe data: -// -// {name: string} | undefined -// -// Jika Anda mengarahkan mouse ke tiga penggunaan 'jon' berikut, -// Anda akan melihat bagaimana tipe berubah tergantung di mana kata tersebut berada: - -if (jon) { - jon; -} else { - jon; -} - -// Tipe '{name: string} | undefined' menggunakan fitur TypeScript -// yang disebut tipe data gabungan (_union types_). Tipe data gabungan -// adalah cara untuk nyatakan bahwa sebuah objek bisa -// menjadi salah satu dari banyak hal. -// -// Tanda pipa (|) bertindak sebagai pemisah antara tipe data yang berbeda. -// Sifat dinamis JavaScript berarti bahwa banyak fungsi -// menerima dan dan mengembalikan objek dari tipe data yang tidak terkait -// dan kita perlu untuk dapat mengungkapkan tipe data mana yang mungkin -// kita hadapi. - -// Kita bisa menggunakan ini dalam beberapa cara. Mari kita mulai dengan melihat -// himpunan (_array_) yang nilainya memiliki tipe berbeda. - -const identifiers = ["Hello", "World", 24, 19]; - -// Kita bisa menggunakan sintaks javascript 'type x === y' untuk -// memeriksa jenis elemen pertama. Anda dapat mengarahkan kursor ke atas -// 'randomIdentifier' di bawah untuk melihat perubahannya -// lokasi berbeda - -const randomIdentifier = identifiers[0]; -if (typeof randomIdentifier === "number") { - randomIdentifier; -} else { - randomIdentifier; -} - -// Analisis aliran kontrol ini berarti kita dapat menulis -// JavaScript polos, dan TypeScript akan mencoba memahami bagaimana file -// jenis kode akan berubah di lokasi berbeda. - -// Untuk mempelajari lebih lanjut tentang analisis aliran kode: -// - example:type-guards - -// Untuk melanjutkan membaca contoh-contoh lain, Anda dapat melompat ke -// beberapa tempat lain sekarang: -// -// - Modern JavaScript: example:immutability -// - Type Guards: example:type-guards -// - Functional Programming with JavaScript example:function-chaining diff --git a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Functions.ts b/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Functions.ts deleted file mode 100644 index 274ed9c630a7..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Functions.ts +++ /dev/null @@ -1,92 +0,0 @@ -//// { order: 2, compiler: { noImplicitAny: false } } - -// Ada beberapa cara untuk mendeklarasikan fungsi di -// JavaScript. Mari kita lihat fungsi yang menambahkan dua -// angka bersama: - -// Membuat fungsi dalam lingkup global yang disebut addOldSchool -function addOldSchool(x, y) { - return x + y; -} - -// Anda dapat memindahkan nama fungsi ke variabel -// nama juga -const anonymousOldSchoolFunction = function (x, y) { - return x + y; -}; - -// Anda juga dapat menggunakan singkatan panah-gemuk (_fat-arrow_) -// untuk suatu fungsi -const addFunction = (x, y) => { - return x + y; -}; - -// Kita akan fokus pada cara terakhir, tapi semuanya -// berlaku untuk ketiga format termasuk dua yang sebelumnya. - -// TypeScript menyediakan sintaks tambahan yang ditambahkan ke -// definisi fungsi dan menawarkan petunjuk tentang tipe data apa -// diharapkan oleh fungsi ini. -// -// Selanjutnya adalah versi paling terbuka dari fungsi add, versi ini -// mengatakan bahwa add mengambil dua masukan dari jenis -// apa pun: dimana masukan ini bisa berupa _string_, angka atau objek -// yang telah Anda buat. - -const add1 = (x: any, y: any) => { - return x + y; -}; -add1("Hello", 23); - -// Ini adalah JavaScript yang sah (_string_ dapat ditambahkan -// seperti ini misalnya) tetapi tidak optimal untuk fungsi kita -// yang kita tahu adalah angka, jadi kita akan mengonversi x dan -// y hanya menjadi angka. - -const add2 = (x: number, y: number) => { - return x + y; -}; -add2(16, 23); -add2("Hello", 23); - -// Bagus. Kita mendapatkan kesalahan ketika ada selain angka -// yang diteruskan ke dalam fungsi. Jika Anda mengarahkan kursor -// ke kata add2 di atas, Anda akan melihat bahwa TypeScript -// mendeskripsikannya sebagai: -// -// const add2: (x: number, y: number) => number -// -// Di mana ia menyimpulkan bahwa ketika dua input merupakan -// nomor, maka satu-satunya jenis pengembalian yang mungkin adalah nomor. -// Ini bagus, Anda tidak perlu menulis sintaks tambahan. -// Mari kita lihat apa yang diperlukan untuk melakukan itu: - -const add3 = (x: number, y: number): string => { - return x + y; -}; - -// Fungsi ini gagal karena kita memberi tahu TypeScript bahwa TypeScipt -// seharusnya menerima nilai kembali dalam bentuk _string_, tetapi -// ternyata fungsinya tidak memenuhi janji itu. - -const add4 = (x: number, y: number): number => { - return x + y; -}; - -// Ini adalah versi yang sangat eksplisit dari add2 - ada -// kasus ketika Anda ingin menggunakan sintaks tipe pengembalian eksplisit -// untuk memberi diri Anda ruang untuk bekerja sebelumnya -// Anda memulai. Agak mirip seperti bagaimana test-driven development -// merekomendasikan memulai dengan tes yang gagal, tetapi dalam kasus ini -// ini dengan bentuk fungsi yang gagal. - -// Contoh ini hanyalah dasar, Anda dapat mempelajari lebih banyak lagi -// tentang bagaimana fungsi bekerja di TypeScript di buku pegangan -// (handbook) dan di dalam bagian JavaScript Fungsional dari contoh: -// -// https://www.typescriptlang.org/docs/handbook/functions.html -// example:function-chaining - -// Dan untuk melanjutkan tur dasar-dasar JavaScript, -// kita akan melihat bagaimana aliran kode memengaruhi tipe data TypeScript: -// example:code-flow diff --git a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Hello World.ts b/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Hello World.ts deleted file mode 100644 index dac141e5d597..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Hello World.ts +++ /dev/null @@ -1,36 +0,0 @@ -//// { order: 0, compiler: { target: 1 } } - -// Selamat datang di area bermain TypeScript. Situs ini mirip -// seperti menjalankan proyek TypeScript di dalam peramban web. - -// Area bermain memudahkan Anda bereksperimen dengan aman -// dengan ide-ide dalam bahasa TypeScript, dengan membuat -// proyek ini mudah untuk dibagikan. Semua yang diperlukan -// untuk memuat proyek untuk orang lain bisa dilakukan -// dengan memuat URL ini. - -const halo = "Halo"; - -// Anda dapat melihat di sebelah kanan hasil dari kompilator -// TypeScript: ini adalah kode JavaScript polos yang dapat -// dijalankan di peramban, server, atau di mana saja. - -const dunia = "Dunia"; - -// Anda dapat melihat bagaimana kompilator Typescript membuat -// perubahan kecil pada kode, dengan mengonversi "const" -// menjadi "var". Ini salah satu dari sekian banyak -// hal-hal yang dilakukan TypeScript agar dapat dijalankan -// di mana saja JavaScript bisa dijalankan. - -console.log(halo + " " + dunia); - -// Karena sekarang Anda sudah mengetahui cara kerja area bermain, -// mari kita lihat bagaimana TypeScript bisa membuat bekerja dengan -// JavaScript jadi lebih menyenangkan. Pada bagian ini kami akan mencoba -// menjaga agar kode yang ada menjadi sedekat mungkin dengan JavaScript polos -// agar Anda dapat menggunakan ulang pengetahuan JavaScript Anda. -// -// Klik di bawah untuk melanjutkan: -// -// example:objects-and-arrays diff --git a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Objects and Arrays.ts b/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Objects and Arrays.ts deleted file mode 100644 index de74996822fe..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/JavaScript Essentials/Objects and Arrays.ts +++ /dev/null @@ -1,113 +0,0 @@ -//// { order: 1, compiler: { strict: false } } - -// Objek JavaScript merupakan kumpulan nilai-nilai yang -// dibungkus menggunakan kata kunci yang memiliki nama. - -const userAccount = { - name: "Kieron", - id: 0, -}; - -// Anda dapat menggabungkan objek-objek ini untuk -// membuat model data yang lebih besar dan lebih rumit. - -const pie = { - type: "Apple", -}; - -const purchaseOrder = { - owner: userAccount, - item: pie, -}; - -// Jika Anda menggunakan tetikus untuk mengarahkan -// kursor ke beberapa kata ini (coba arahkan kursor -// ke objek purchaseOrder di atas) Anda dapat melihat -// bagaimana TypeScript menafsirkan JavaScript Anda menjadi -// tipe data berlabel. - -// Nilai dapat diakses melalui ".", Jadi untuk mendapatkan -// nama pengguna untuk pesanan pembelian: -console.log(purchaseOrder.item.type); - -// Jika Anda mengarahkan kursor tetikus ke setiap bagian kode -// antara tanda (), Anda dapat melihat TypeScript menampilkan lebih banyak -// informasi tentang tiap-tiap bagian. Coba tulis ulang kode di bawah ini: - -// Salin ini di baris berikutnya, karakter demi karakter: -// -// purchaseOrder.item.type - -// TypeScript memberikan umpan balik ke area bermain -// tentang objek JavaScript apa saja yang tersedia di berkas ini -// dan memungkinkan Anda menghindari kesalahan ketik dan melihat tambahan -// informasi tanpa harus mencarinya di tempat lain. - -// TypeScript juga menawarkan fitur yang sama untuk himpunan (_array_). -// Berikut adalah himpunan yang isinya hanya pesanan pembelian -// yang kita buat. - -const allOrders = [purchaseOrder]; - -// Jika Anda mengarahkan kursor ke allOrders, Anda dapat -// mengetahui bahwa itu adalah himpunan karena info _hover_ -// diakhiri dengan []. Anda dapat mengakses -// urutan pertama menggunakan tanda kurung siku dengan indeks -// (mulai dari nol). - -const firstOrder = allOrders[0]; -console.log(firstOrder.item.type); - -// Cara alternatif untuk mendapatkan objek adalah dengan memencet (_popping_) -// himpunan untuk menghapus objek. Dengan melakukan ini, kita bisa -// menghapus objek dari himpunan, dan mengembalikan objek. Ini disebut -// mutasi himpunan, karena mengubah data di dalamnya. - -const poppedFirstOrder = allOrders.pop(); - -// Sekarang allOrders menjadi kosong. Mutasi data dapat bermanfaat untuk -// banyak hal, tapi satu cara untuk mengurangi kerumitan di -// basis kode Anda adalah dengan menghindari mutasi. TypeScript menawarkan cara -// untuk mendeklarasikan himpunan hanya baca (_read-only_): - -// Membuat tipe data berdasarkan bentuk pesanan pembelian: -type PurchaseOrder = typeof purchaseOrder; - -// Membuat himpunan pesanan pembelian yang hanya bisa dibaca -const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder]; - -// Ya! Agak lebih banyak kode memang. Ada empat -// hal-hal baru di sini: -// -// type PurchaseOrder - Menyatakan tipe data baru ke TypeScript. -// -// typeof - Gunakan sistem inferensi tipe data (_type inference_) untuk -// menyetel tipe data berdasarkan konstanta yang diteruskan berikutnya. -// -// purchaseOrder - Dapatkan variabel purchaseOrder dan beri tahu -// TypeScript ini adalah bentuk dari semua -// objek didalam himpunan pesanan. -// -// readonly - Objek ini tidak mendukung mutasi, sekali -// objek ini dibuat maka isi himpunan -// akan selalu sama. -// -// Sekarang jika Anda mencoba untuk keluar dari readonlyOrders, TypeScript -// akan memunculkan kesalahan. - -readonlyOrders.pop(); - -// Anda bisa menggunakan _readonly_ di semua tempat, -// sedikit lebih banyak sintaks tambahan di sana-sini, tapi sintaks -// ini memberikan lebih banyak keamanan ekstra. - -// Anda dapat mengetahui lebih lanjut tentang readonly: -// - https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties -// - https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html - -// Dan Anda bisa terus belajar tentang JavaScript dan -// TypeScript didalam contoh tentang fungsi: -// example:functions -// -// Atau jika Anda ingin tahu lebih banyak tentang immutability: -// example:immutability diff --git a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Async Await.ts b/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Async Await.ts deleted file mode 100644 index df9b6e57c3d6..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Async Await.ts +++ /dev/null @@ -1,114 +0,0 @@ -//// { order: 1, target: "es5" } - -// JavaScript modern menambahkan sebuah cara untuk menangani _callback_ -// dengan cara yang elegan melalui API berbasis Promise yang memiliki -// sintaks khusus yang mengizinkan Anda untuk menganggap kode -// program yang bersifat asinkron seperti kode program biasa - -// Seperti fitur lainnya, Promise memiliki kekurangan dalam -// hal kompleksitas kode program: membuat sebuah fungsi -// sebagai fungsi asinkron akan membuat nilai kembalian -// dibungkus dalam Promise. Apa yang sebelumnya mengembalikan -// sebuah string, sekarang akan mengembalikan Promise. - -const fungsi = () => ":wave:"; -const fungsiAsinkron = async () => ":wave:"; - -const string = fungsi(); -const stringDalamPromise = fungsiAsinkron(); - -string.length; - -// stringDalamPromise merupakan sebuah Promise, bukan string: - -stringDalamPromise.length; - -// Anda dapat menggunakan kata kunci `await` untuk mengubah -// sebuah Promise menjadi nilai yang ditampung oleh Promise -// tersebut. Untuk saat ini, kata kunci tersebut hanya dapat -// digunakan pada fungsi asinkron. - -const fungsiPembungkus = async () => { - const string = fungsi(); - const stringDalamPromise = await fungsiAsinkron(); - - // Melalui kata kunci `await`, sekarang `stringDalamPromise` - // merupakan sebuah string. - string.length; - stringDalamPromise.length; -}; - -// Kode program yang berjalan menggunakan kata kunci `await` -// dapat melempar galat, dan hal tersebut menjadi penting -// karena galat tersebut harus ditangani pada bagian manapun. - -const fungsiYangMelemparGalat = async () => { - throw new Error("Jangan panggil fungsi ini"); -}; - -// Anda dapat membungkus pemanggilan fungsi asinkron pada sebuah -// blok try-catch untuk menangani kasus di mana fungsi yang -// dipanggil melakukan sesuatu yang tidak diharapkan. - -const menangkapFungsiAsinkron = async () => { - const nilaiKembalian = "Halo dunia!"; - try { - await fungsiYangMelemparGalat(); - } catch (error) { - console.error("fungsiYangMelemparGalat gagal dijalankan", error); - } - return nilaiKembalian; -}; - -// Karena ergonomi dari API ini yang mengharuskan Anda untuk -// mengembalikan satu nilai kembalian, atau melempar galat, Anda -// sebaiknya memberikan informasi mengenai nilai-nilai yang -// terdapat pada nilai yang dikembalikan dan melempat galat -// apabila sesuatu yang benar-benar spesial terjadi. - -const contohFungsiAkarKuadrat = async (masukan: any) => { - if (isNaN(masukan)) { - throw new Error("Masukan hanya dapat berupa angka"); - } - - if (masukan < 0) { - return { sukses: false, pesan: "Tidak bisa mencari akar bilangan negatif" }; - } else { - return { sukses: true, nilai: Math.sqrt(masukan) }; - } -}; - -// Lalu pengguna fungsi tersebut dapat memeriksa respon -// dan mengetahui apa yang harus dilakukan dengan nilai kembalian -// tersebut. Walaupun contoh berikut merupakan contoh yang -// sederhana, ketika Anda mulai bekerja dengan kode -// yang berhubungan dengan jaringan, API sebaiknya didokumentasikan. - -const periksaAkarKuadrat = async (nilai: number) => { - const respon = await contohFungsiAkarKuadrat(nilai); - if (respon.sukses) { - respon.nilai; - } -}; - -// Sintaks Async / Await mengubah kode yang seperti berikut: - -// getResponse(url, (response) => { -// getResponse(response.url, (secondResponse) => { -// const responseData = secondResponse.data -// getResponse(responseData.url, (thirdResponse) => { -// ... -// }) -// }) -// }) - -// Menjadi linear seperti berikut: - -// const response = await getResponse(url) -// const secondResponse = await getResponse(response.url) -// const responseData = secondResponse.data -// const thirdResponse = await getResponse(responseData.url) -// ... - -// Sintaks Async / Await dapat membuat kode program lebih condong -// ke sisi kiri, dan dibaca pada ritme yang konsisten. diff --git a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Immutability.ts b/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Immutability.ts deleted file mode 100644 index 7ae11101bdd3..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Immutability.ts +++ /dev/null @@ -1,68 +0,0 @@ -// JavaScript adalah bahasa pemrograman yang memiliki -// beberapa cara untuk mendeklarasikan objek-objek yang tidak -// berubah. Cara yang paling menonjol adalah dengan menggunakan -// kata kunci `const` - yang menandakan bahwa nilai tidak akan -// berubah. - -const haloDunia = "Halo Dunia"; - -// Sekarang, Anda tidak dapat mengubah nilai haloDunia, TypeScript -// akan melempar sebuah galat mengenai hal tersebut, untuk -// mencegah Anda mendapatkan galat saat program dieksekusi. - -// You cannot change helloWorld now, TypeScript will give -// you an error about this, because you would get one at -// runtime instead. - -haloDunia = "Hai Dunia"; - -// Mengapa Anda harus peduli pada nilai yang tidak dapat berubah? -// Alasan utamanya adalah untuk mengurangi kompleksitas pada kode -// program Anda. Apabila Anda dapat mengurangi hal-hal yang nilainya -// dapat berubah, Anda akan mengurangi hal yang harus Anda pantau. - -// Menggunakan kata kunci `const` merupakan langkah awal yang baik, -// namun cara tersebut tidak akan sepenuhnya berhasil apabila -// digunakan untuk objek. - -const objekKonstanta = { - pesan: "Halo Dunia", -}; - -// objekKonstanta tidak sepenuhnya konstan, karena Anda masih -// dapat mengubah beberapa bagian dari objek tersebut, sebagai -// contoh Anda dapat mengubah nilai dari `pesan`: - -objekKonstanta.pesan = "Hai Dunia"; - -// Kata kunci `const` menandakan objek yang ditunjuk memiliki -// nilai yang tidak akan berubah, namun bagian internal -// dari objek tersebut tetap dapat diubah. Perilaku tersebut -// dapat diubah menggunakan `Object.freeze`. - -const objekKonstantaPasti = Object.freeze({ - pesan: "Halo Dunia", -}); - -// Ketika sebuah objek dibekukan, maka Anda tidak dapat -// mengubah bagian internal dari objek tersebut. TypeScript -// akan meleparkan sebuah galat pada kasus ini: - -objekKonstantaPasti.pesan = "Hai Dunia"; - -// Cara tersebut juga dapat digunakan pada _array_: - -const arrayYangDibekukan = Object.freeze(["Hai"]); -arrayYangDibekukan.push("Dunia"); - -// Menggunakan kata kunci `Object.freeze` menjamin -// bahwa nilai objek tidak akan berubah, termasuk -// internal dari objek tersebut. - -// TypeScript memiliki beberapa _hook_ sintaks tambahan untuk -// meningkatkan kemampuan Anda ketika bekerja dengan data -// yang tidak berubah yang dapat Anda temukan pada bagian -// contoh TypeScript berikut: -// -// example:literals -// example:type-widening-and-narrowing diff --git a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Import Export.ts b/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Import Export.ts deleted file mode 100644 index 2409a4fd6351..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/Import Export.ts +++ /dev/null @@ -1,119 +0,0 @@ -//// { order: 1, target: "ES5" } - -// JavaScript menambahkan sintaks impor dan ekspor pada tahun 2016 -// dan TypeScript memiliki dukungan penuh untuk sintaks ini yang -// berfungsi untuk menghubungkan berkas dengan berkas lain dan -// pada modul eksternal lain. TypeScript memperluas sintaks -// impor dan ekspor dengan memperbolehkan tipe data untuk -// diimpor dan diekspor pada kode program. - -// Berikut merupakan kode program untuk mengimpor sebuah modul. - -import { danger, message, warn, DangerDSLType } from "danger"; - -// Kode di atas berusaha mengimpor beberapa impor bernama -// dari sebuah modul NodeJS bernama `danger`. Walaupun ada -// lebih dari empat objek yang dapat diimpor, namun hanya -// empat objek tersebut yang akan diimpor. - -// Dengan mengimpor objek secara spesifik, perkakas yang -// tersedia dapat menghapus kode-kode yang tidak dibutuhkan -// pada aplikasi Anda, dan membantu Anda untuk mengetahui -// impor apa yang digunakan pada sebuah berkas. - -// Pada contoh di atas: `danger`, `message`. dan `warn` -// merupakan impor JavaScript - sedangkan `DangerDSLType` -// merupakan sebuah antarmuka. - -// TypeScript mengizinkan pengembang untuk mendokumentasikan -// kode program yang mereka buat menggunakan JSDoc, sehingga -// dokumentasi juga dapat diimpor. Sebagai contoh, apabila -// Anda menyorot pada bagian-bagian kode di bawah, Anda -// dapat melihat penjelasan mengenai bagian tersebut. - -danger.git.modified_files; - -// Apabila Anda ingin mengetahui cara untuk menyediakan -// anotasi pada dokumentasi, silahkan baca pada -// example:jsdoc-support - -// Cara lain untuk mengimpor kode adalah dengan menggunakan -// ekspor bawaan milik modul. Berikut merupakan contoh -// dari penggunaan ekspor bawaan pada modul `debug`, yang -// mengekspos sebuah fungsi yang membuat sebuah fungsi pencatatan. - -import debug from "debug"; -const log = debug("playground"); -log("Started running code"); - -// Karena sifat dari ekspor bawaan yang tidak memiliki -// nama yang tetap, ekspor-ekspor bawaan dapat membingungkan -// perkakas analisis seperti dukungan _refactoring_ pada -// TypeScript, namun ekspor bawaan tetap memiliki kegunaan. - -// Karena ada sejarah panjang dari impor dan ekspor kode -// dalam JavaScript, terdapat sebuah bagian yang membingungkan -// dari ekspor bawaan: Beberapa ekspor memiliki dokumentasi -// yang menyatakan bahwa Anda dapat menulis sebuah impor sebagai -// berikut: - -import req from "request"; - -// Namun, impor tersebut akan gagal, kemudian Anda menemukan -// sebuah pertanyaan pada StackOverflow yang menyarankan -// Anda untuk mengimpor seperti berikut: - -import * as req from "request"; - -// Dan cara tersebut akan berhasil. Alasan mengenai keberhasilan -// tersebut akan dibahas pada bagian akhir dari dokumentasi ini. - -// Supaya dapat diimpor, kode harus dapat diekspor. Cara modern -// untuk menyatakan ekspor adalah menggunakan kata kunci `export`. - -/** Jumlah stiker yang tersedia */ -export const jumlahStiker = 11; - -// Ekspor tersebut dapat diimpor pada berkas lain dengan cara: -// -// import { jumlahStiker } from "./path/to/file" - -// Anda dapat menulis `export` sebanyak mungkin pada sebuah -// berkas sesuai keinginan Anda. Ekspor bawaan juga dapat -// dinyatakan dengan cara yang sama. - -/** Menghasilkan stiker untuk Anda */ -const pembuatStiker = () => { }; -export default pembuatStiker; - -// Ekspor tersebut dapat diimpor pada berkas lain dengan cara: -// -// import perolehStiker from "./path/to/file" -// -// Impor bawaan dapat dinamai sesuai keinginan pada berkas -// tempat bagian tersebut diimpor. - -// Ada cara-cara lain untuk melakukan impor, namun contoh-contoh -// di atas merupakan cara-cara yang umum digunakan pada kode -// program modern. Membahas seluruh cara untuk mengimpor -// kode merupakan sebuah topik yang panjang pada buku pegangan berikut: -// -// https://www.typescriptlang.org/docs/handbook/modules.html - -// Namun, untuk menjawab pertanyaan terakhir, apabila Anda -// melihat kode JavaScript pada contoh ini - Anda akan melihat: - -// var pembuatStiker = function () { }; -// exports.default = pembuatStiker; - -// Kode di atas akan menetapkan properti bawaan dari objek `exports` -// menjadi `pembuatStiker`. Ada kode-kode lain yang menetapkan -// `exports` bawaan menjadi sebuah fungsi. -// -// TypeScript memilih untuk berpegang pada spesifikasi ECMAScript -// untuk menangani kasus-kasus tersebut, yaitu dengan melemparkan -// sebuah galat. Namun, terdapat opsi `esModuleInterop` pada kompilator -// untuk menangani kasus-kasus tersebut secara otomatis. -// -// Apabila Anda mengaktifkan opsi tersebut pada contoh ini, Anda -// akan melihat bahwa galat akan hilang. diff --git a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/JSDoc Support.js b/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/JSDoc Support.js deleted file mode 100644 index b71b71369a2d..000000000000 --- a/packages/playground-examples/copy/id/JavaScript/Modern JavaScript/JSDoc Support.js +++ /dev/null @@ -1,103 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// TypeScript memiliki banyak dukungan untuk JSDoc. Bahkan -// Anda dapat membuat berkas JavaScript biasa dan menggunakan -// anotasi JSDoc untuk membuat lingkungan pengembangan yang -// kaya dukungan. -// -// Sebuah komentar JSDoc merupakan sebuah komentar lebih dari -// satu baris yang dimulai dengan dua buah bintang, kontras -// dengan komentar biasa yang dimulai dengan satu bintang. - -/* Ini adalah komentar biasa */ -/** Ini adalah komentar JSDoc */ - -// Komentar JSDoc akan terhubung dengan kode JavaScript -// terdekat yang ada di bawah komentar tersebut. - -const contohVariabel = "Hai"; - -// Apabila Anda menyorot `contohVariabel`, Anda dapat melihat -// bahwa teks yang ada dalam JSDoc diikutsertakan. - -// Komentar JSDoc merupakan sebuah cara untuk memberikan informasi -// mengenai tipe data pada TypeScript dan editor Anda. Mari kita -// mulai dengan menyetel sebuah tipe data dari variabel menjadi -// tipe data bawaan. - -// Pada seluruh contoh di bawah ini, Anda dapat menyorot nama -// variabel dan pada baris selanjutnya, coba ketik [example]. -// untuk melihat opsi penyelesaian otomatis. - -/** @type {number} */ -var bilanganKu; - -// Anda dapat melihat seluruh _tag_ yang didukung pada buku -// pegangan berikut: -// -// https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc - -// Namun, kita akan mencoba beberapa contoh umum berikut ini. Anda -// juga dapat menyalin dan menempel setiap contoh dari buku panduan -// kesini. - -// Mengimpor tipe data dari berkas konfigurasi JavaScript: - -/** @type { import("webpack").Config } */ -const config = {}; - -// Membuat tipe data yang kompleks yang dapat digunakan -// kembali di banyak tempat: - -/** - * @typedef {Object} Pengguna - Akun pengguna - * @property {string} nama - nama yang digunakan untuk menunjukkan pengguna - * @property {number} id - sebuah ID yang unik - */ - -// Kemudian, Anda dapat menggunakannya sebagai nama pada `typedef`: - -/** @type { Pengguna } */ -const pengguna = {}; - -// Berikut merupakan cara untuk menyingkat definisi -// tipe data pada TypeScript, yang kemudian dapat Anda -// gunakan pada `type` dan `typedef`: - -/** @type {{ owner: Pengguna, nama: string }} */ -const sumberDaya; - -/** @typedef {{owner: Pengguna, nama: string}} SumberDaya */ - -/** @type {SumberDaya} */ -const sumberDayaLain; - -// Mendeklarasikan fungsi yang memiliki tipe data: - -/** - * Menjumlahkan dua buah bilangan - * @param {number} a Bilangan pertama - * @param {number} b Bilangan kedua - * @returns {number} - */ -function jumlahDuaBilangan(a, b) { - return a + b; -} - -// Anda dapat menggunakan perkakas tipe data TypeScript, -// seperti `union`: - -/** @type {(string | boolean)} */ -let stringAtauBoolean = ""; -stringAtauBoolean = false; - -// Menambahkan dokumentasi pada objek global menggunakan JSDoc -// merupakan proses yang lebih melibatkan VS Code, yang dapat -// Anda lihat melalui dokumentasi VS Code berikut: -// -// https://code.visualstudio.com/docs/nodejs/working-with-javascript#_global-variables-and-type-checking - -// Menambahkan komentaar JSDoc pada fungsi yang Anda buat -// merupakan solusi yang menguntungkan; Anda mendapat -// dukungan perkakas yang lebih baik dan pengguna API -// Anda juga dapat menikmatinya. diff --git a/packages/playground-examples/copy/id/sections.json b/packages/playground-examples/copy/id/sections.json deleted file mode 100644 index 9c45d433eb85..000000000000 --- a/packages/playground-examples/copy/id/sections.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "sections": [ - { - "name": "JavaScript", - "id": "JavaScript", - "subtitle": "Lihat bagaimana TypeScript meningkatkan pekerjaan JavaScript sehari-hari dengan sedikit penambahan sintaks." - }, - { - "name": "TypeScript", - "id": "TypeScript", - "subtitle": "Jelajahi bagaimana TypeScript mengembangkan JavaScript untuk menambah keamanan dan perkakas." - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "Lihat Catatan rilis." - }, - { - "name": "3.8", - "id": "3.8", - "subtitle": "Lihat Catatan rilis." - }, - { - "name": "4.0", - "id": "4.0", - "subtitle": "Lihat Catatan rilis." - }, - { - "name": "Playground V3", - "id": "Playground", - "subtitle": "Ketahui apa yang telah berubah pada situs ini." - } - ], - "sortedSubSections": [ - // JS - "JavaScript Esensial", - "Fungsi dengan JavaScript", - "Bekerja dengan Kelas", - "JavaScript Modern", - "API Eksternal", - "Bantuan dengan JavaScript", - // TS - "Primitif", - "Tipe Primitif", - "Meta-Types", - "Bahasa", - "Ekstensi Bahasa", - // Examples - "Sintaks dan Pesan", - "Tipe dan Alur Kode", - "Fixits", - // Playground - "Pengaturan", - "Perkakas", - // 3.8 - "Perubahan yang Merusak", - "Peningkatan JSDoc", - // 4.0 - "Fitur JavaScript Baru", - "Fitur TypeScript Baru", - "Pemeriksaan Baru" - ] -} \ No newline at end of file diff --git a/packages/playground-examples/copy/ja/3-7/Fixits/Big number literals.ts b/packages/playground-examples/copy/ja/3-7/Fixits/Big number literals.ts deleted file mode 100644 index 97a1045b2677..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Fixits/Big number literals.ts +++ /dev/null @@ -1,34 +0,0 @@ -//// { compiler: { target: 99 }, order: 1 } - -// JavaScript を書く際に、JavaScript で表現できる数字の大きさに -// 制限があることをあることをご存知でしたか? - -const maxHighValue = 9007199254740991 -const maxLowValue = -9007199254740991 - -// これらの数字を上回る/下回ることは、大変危険です。 - -const oneOverMax = 9007199254740992 -const oneBelowMin = -9007199254740992 - -// このサイズの数値を扱うための解決策は、 -// これらの数値を、number の代わりに BigInts に変換することです: -// -// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt - -// TypeScriptは、2の52乗以上の数値リテラル(正/負)の修正機能を提供するようになり、 -// 接尾辞 "n"を追加してJavaScriptにBigInt型であることを知らせるようになりました。 - -// 数値リテラル -9007199254740993; --9007199254740993 -9007199254740994; --9007199254740994 - -// 六進数 -0x19999999999999; --0x19999999999999 -0x20000000000000; --0x20000000000000 -0x20000000000001; --0x20000000000001 diff --git a/packages/playground-examples/copy/ja/3-7/Fixits/Const to let.ts b/packages/playground-examples/copy/ja/3-7/Fixits/Const to let.ts deleted file mode 100644 index 07464c564421..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Fixits/Const to let.ts +++ /dev/null @@ -1,9 +0,0 @@ -//// { compiler: { }, order: 1 } - -// 3.7では、const変数の値が再代入されたときに、素早くletに変換する機能が追加されました。 - -// 以下のエラーをハイライトして、クイックフィックスを実行することで試すことができます。 - -const displayName = 'Andrew' - -displayName = 'Andrea' diff --git a/packages/playground-examples/copy/ja/3-7/Fixits/Infer From Usage Changes.ts b/packages/playground-examples/copy/ja/3-7/Fixits/Infer From Usage Changes.ts deleted file mode 100644 index 27aa12dec0d9..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Fixits/Infer From Usage Changes.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { compiler: { noImplicitAny: false }, order: 2 } - -// 3.7 で TypeScript 既存の「使用状況からの推論」によるコード修正はよりスマートになりました。 -// 既知の重要な型 (string, number, array, Promise) のリストを用いて、 -// 型の使用方法がこれらのオブジェクトのAPIと一致するかどうかを推論する様になりました。 - -// 次のいくつかの例では、関数のパラメータを選択し、電球をクリックして "Infer Parameter types..." を選択してください。 - -// 数値配列の推論: - -function pushNumber(arr) { - arr.push(12) -} - -// promiseの推論: - -function awaitPromise(promise) { - promise.then(value => console.log(value)) -} - -// 関数とその戻り値の型の推論: - -function inferAny(app) { - const result = app.use('hi') - return result -} - -// 文字列配列に文字列が追加された為、文字列配列を推論します: - -function insertString(names) { - names[1] = 'hello' -} diff --git a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Flattened Error Reporting.ts b/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Flattened Error Reporting.ts deleted file mode 100644 index 9dea422ae540..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Flattened Error Reporting.ts +++ /dev/null @@ -1,64 +0,0 @@ -//// { compiler: { }, order: 3 } - -// TypeScriptのエラーメッセージはときどき、少しだけ冗長になってしまうことがあります。 -// 3.7では、特にひどいいくつかの事例を -// 取り上げました。 - -// 入れ子のプロパティ - -let a = { b: { c: { d: { e: "string" } } } }; -let b = { b: { c: { d: { e: 12 } } } }; - -a = b; - -// 以前は、入れ子のプロパティ1つにつき2行のコードでした。 -// これは、エラーメッセージの最初と最後の行を読むことで、 -// エラーメッセージの読み方をすぐに学べるということを意味していました。 - -// 今は、これらはインラインになりました。:tada: - -// 3.6では以下のようになっていました: -// -// Type '{ b: { c: { d: { e: number; }; }; }; }' is not assignable to type '{ b: { c: { d: { e: string; }; }; }; }'. -// Types of property 'b' are incompatible. -// Type '{ c: { d: { e: number; }; }; }' is not assignable to type '{ c: { d: { e: string; }; }; }'. -// Types of property 'c' are incompatible. -// Type '{ d: { e: number; }; }' is not assignable to type '{ d: { e: string; }; }'. -// Types of property 'd' are incompatible. -// Type '{ e: number; }' is not assignable to type '{ e: string; }'. -// Types of property 'e' are incompatible. -// Type 'number' is not assignable to type 'string' - -// これによって、様々な形のオブジェクトに対しても、 -// 有用で簡潔なエラーメッセージを表示することができるようになりました。 - -class ExampleClass { - state = "ok"; -} - -class OtherClass { - state = 12; -} - -let x = { a: { b: { c: { d: { e: { f: ExampleClass } } } } } }; -let y = { a: { b: { c: { d: { e: { f: OtherClass } } } } } }; -x = y; - -// 3.6では以下のようになっていました: -// -// Type '{ a: { b: { c: { d: { e: { f: typeof OtherClass; }; }; }; }; }; }' is not assignable to type '{ a: { b: { c: { d: { e: { f: typeof ExampleClass; }; }; }; }; }; }'. -// Types of property 'a' are incompatible. -// Type '{ b: { c: { d: { e: { f: typeof OtherClass; }; }; }; }; }' is not assignable to type '{ b: { c: { d: { e: { f: typeof ExampleClass; }; }; }; }; }'. -// Types of property 'b' are incompatible. -// Type '{ c: { d: { e: { f: typeof OtherClass; }; }; }; }' is not assignable to type '{ c: { d: { e: { f: typeof ExampleClass; }; }; }; }'. -// Types of property 'c' are incompatible. -// Type '{ d: { e: { f: typeof OtherClass; }; }; }' is not assignable to type '{ d: { e: { f: typeof ExampleClass; }; }; }'. -// Types of property 'd' are incompatible. -// Type '{ e: { f: typeof OtherClass; }; }' is not assignable to type '{ e: { f: typeof ExampleClass; }; }'. -// Types of property 'e' are incompatible. -// Type '{ f: typeof OtherClass; }' is not assignable to type '{ f: typeof ExampleClass; }'. -// Types of property 'f' are incompatible. -// Type 'typeof OtherClass' is not assignable to type 'typeof ExampleClass'. -// Type 'OtherClass' is not assignable to type 'ExampleClass'. -// Types of property 'state' are incompatible. -// Type 'number' is not assignable to type 'string' diff --git a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Nullish Coalescing.ts b/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Nullish Coalescing.ts deleted file mode 100644 index 5a1c527448bc..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Nullish Coalescing.ts +++ /dev/null @@ -1,43 +0,0 @@ -//// { compiler: { }, order: 2 } - -// Null合体演算子は左辺が -// nullまたはundefinedのときに -// 右辺の式を返す||演算子の代わりです。 - -// Null合体演算子とは対照的に、||演算子は空文字列や数字の0がfalseと判断される -// falsyチェックを用います。 - -// この機能の良い例は、 -// キーが渡されなかったときに部分オブジェクトがデフォルト値を持つように処理する操作です。 - -interface AppConfiguration { - // デフォルト: "(no name)"; 空文字列は有効 - name: string; - - // デフォルト: -1; 0は有効 - items: number; - - // デフォルト: true - active: boolean; -} - -function updateApp(config: Partial) { - // Null合体演算子を使ったとき - config.name = config.name ?? "(no name)"; - config.items = config.items ?? -1; - config.active = config.active ?? true; - - // Null合体演算子を使わない現在の解決法 - config.name = typeof config.name === "string" ? config.name : "(no name)"; - config.items = typeof config.items === "number" ? config.items : -1; - config.active = typeof config.active === "boolean" ? config.active : true; - - // ||演算子を用いると有効でないデータになる可能性がある - config.name = config.name || "(no name)"; // "" の入力が許容できない - config.items = config.items || -1; // 0の入力が許容できない - config.active = config.active || true; // とても悪いことに、常にtrueになる -} - -// 3.7のリリース記事にて、Null合体演算子についてより詳細に知ることができます: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Optional Chaining.ts b/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Optional Chaining.ts deleted file mode 100644 index c5935e418f37..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Syntax and Messaging/Optional Chaining.ts +++ /dev/null @@ -1,70 +0,0 @@ -//// { compiler: { }, order: 1 } - -// オプショナルチェイニングは3.7の開発中にTC39のStage 3合意に達しました。 -// オプショナルチェイニングによって -// nullまたはundefinedだったときに -// 式の実行を即座に止めるコードが書けるようになります。 - -// プロパティへのアクセス - -// データの中にアーティストそのものの情報やアーティストのプロフィールがない可能性がある -// アルバム情報を想像してみましょう。例えば、コンピレーションアルバムは -// 単一のアーティストについての情報を持っていないでしょう。 - -type AlbumAPIResponse = { - title: string; - artist?: { - name: string; - bio?: string; - previousAlbums?: string[]; - }; -}; - -declare const album: AlbumAPIResponse; - -// オプショナルチェイニングを用いると、 -// コードは以下のように書けます。 - -const artistBio = album?.artist?.bio; - -// 以下のように書く代わりに: - -const maybeArtistBio = album.artist && album.artist.bio; - -// 演算子は"falsy"な値(例えば、空文字列や0、NaN、もちろんfalse)に -// 対して異なる振る舞いをするため、 -// この場合、?.演算子は&&演算子とは異なる振る舞いをします。 - -// オプショナルチェイニングはnullまたはundefinedのみを -// 処理を止め、undefinedを返す合図と捉えます。 - -// オプショナルな要素へのアクセス - -// プロパティへのアクセスは .演算子を用いて行われます。 -// オプショナルチェイニングは要素にアクセス際の[]演算子でも同様に機能します。 - -const maybeArtistBioElement = album?.["artist"]?.["bio"]; - -const maybeFirstPreviousAlbum = album?.artist?.previousAlbums?.[0]; - -// オプショナルな呼び出し - -// オプショナルチェイニングは、実行時に存在するか分からない関数を扱うときに、 -// 関数が存在するときにだけ呼び出す機能をサポートしています。 -// これによって、伝統的に書いていた次のような -// コードを置き換えられます: if (func) func() - -// 以下はAPI requestからのcallbackに対する -// オプショナルな呼び出しの例です。 - -const callUpdateMetadata = (metadata: any) => Promise.resolve(metadata); // API呼び出しのダミー - -const updateAlbumMetadata = async (metadata: any, callback?: () => void) => { - await callUpdateMetadata(metadata); - - callback?.(); -}; - -// 3.7のリリース記事にて、オプショナルチェイニングについてより詳細に知ることができます: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Assertion Functions.ts b/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Assertion Functions.ts deleted file mode 100644 index b6a7d39b7e47..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Assertion Functions.ts +++ /dev/null @@ -1,68 +0,0 @@ -//// { compiler: { }, order: 1 } - -// JavaScriptの柔軟性を考えると、ランタイムチェックにコードを追加して -// 仮定を検証するというのは良い考えでしょう。 - -// この検証を行うコードは一般的にアサーション(または不変条件)とよばれ、 -// 変数が期待と一致しない場合に早期にエラーを発生させる -// 小さな関数です。 - -// Nodeには標準でこれを行うための、assertと呼ばれる関数が付属しており、 -// インポートなしで使用することができます。 - -// しかし、ここでは自前で定義してみましょう。 -// valueという式がtrueであることを -// アサートする関数を次のように定義します: -declare function assert(value: unknown): asserts value; - -// では、これを使用してEnumの型を検証してみましょう -declare const maybeStringOrNumber: string | number; -assert(typeof maybeStringOrNumber === "string"); - -// TypeScript 3.7では、コードフロー解析でこのような関数を使い、 -// コードがどのようなものであるか把握することができます。そのため、下記の -// 変数にマウスをホバーすると、文字列または数値から単なる文字列に -// 絞り込まれていることがわかります。 - -maybeStringOrNumber; - -// アサーション関数を使えば、推論されたコード全体で型の保証を行うことが -// できます。 -// 例えば、TypeScriptはパラメータに型を追加せずとも、 -// 上記のアサート宣言を介して、この関数が数値を返すと -// 知っています。 - -function multiply(x: any, y: any) { - assert(typeof x === "number"); - assert(typeof y === "number"); - - return x * y; -} - -// アサーション関数はタイプガードexample:type-guardsと -// 兄弟関係にありますが、関数を通して継続する場合に制御フローに -// 影響を与えるという点が異なります。 - -// 例えば、アサーション関数を使って段々とEnumを絞り込むことが -// できます - -declare const oneOfFirstFiveNumbers: 1 | 2 | 3 | 4 | 5; - -declare function isOdd(param: unknown): asserts param is 1 | 3 | 5; -declare function isBelowFour(param: unknown): asserts param is 1 | 2 | 3 | 4; - -// これにより、Enumは次のように絞り込まれるはずです: 1 | 3 | 5 - -isOdd(oneOfFirstFiveNumbers); -oneOfFirstFiveNumbers; - -// さらにこれにより、Enumの取りうる値は次のように切り取られます: 1 | 3 - -isBelowFour(oneOfFirstFiveNumbers); -oneOfFirstFiveNumbers; - -// 上記は、TypeScript 3.7のアサーション関数の -// 機能についての入門です。 -// 詳細はリリースノートを確認してください: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Recursive Type References.ts b/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Recursive Type References.ts deleted file mode 100644 index e00a8f45b3c2..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Recursive Type References.ts +++ /dev/null @@ -1,40 +0,0 @@ -//// { compiler: { }, order: 2 } - -// タイプを使うかインターフェースを使うかはそれぞれの機能の制約に依るところがあります。 -// 3.7では、type aliasに関する制約のうち、interfaceにはない制約が削除 -// されました。 - -// これについての詳細はexample:types-vs-interfacesを参照してください。 - -// 以前は、定義している型自体の内部で -// 定義している型を参照することはできませんでした。 -// これはインターフェースには存在しない制約であり、 -// 回避するには少しの手間が必要でした。 - -// 例えば、以下は3.6では実行できません: -type ValueOrArray = T | Array>; - -// type aliasとinterfaceを組み合わせた回避策は -// 次のようなものでした。 -type ValueOrArray2 = T | ArrayOfValueOrArray; -interface ArrayOfValueOrArray extends Array> {} - -// この制約の削除により、自身を参照することでJSONを包括的に -// 定義できます。 - -type Json = string | number | boolean | null | Json[] | { [key: string]: Json }; - -const exampleStatusJSON: Json = { - available: true, - username: "Jean-loup", - room: { - name: "Highcrest", - // Json型に関数を追加できない - // update: () => {} - }, -}; - -// 3.7ベータ版のリリースノートとPRでより多くのことが学べます: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ -// https://github.com/microsoft/TypeScript/pull/33050 diff --git a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Uncalled Function Checks.ts b/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Uncalled Function Checks.ts deleted file mode 100644 index 8c8de17ef953..000000000000 --- a/packages/playground-examples/copy/ja/3-7/Types and Code Flow/Uncalled Function Checks.ts +++ /dev/null @@ -1,41 +0,0 @@ -//// { compiler: { }, order: 1 } - -// 3.7ではif文の中で誤って -// 関数の戻り値の代わりに関数そのものを使っていないかを -// 検出する機能が追加されました。 - -// これは関数が存在することがわかっていて、if文が常にtrueになる -// 場合にのみ適用されます。 - -// ここでは、オプションとオプションでないコールバックがある -// プラグインインターフェースの例を示します。 - -interface PluginSettings { - pluginShouldLoad?: () => void; - pluginIsActivated: () => void; -} - -declare const plugin: PluginSettings; - -// pluginShouldLoadは存在しない可能性があるため -// 次のチェックは正当なものとなります。 - -if (plugin.pluginShouldLoad) { - // pluginShouldLoadが存在する場合の処理 -} - -// 3.6以前で以下はエラーではありませんでした。 - -if (plugin.pluginIsActivated) { - // プラグインが有効化されていた場合になにか処理を - // 行おうとしていますが、関数を呼び出すのではなく - // プロパティとして使用しています。 -} - -// pluginIsActivatedは常に存在しているはずですが、 -// ifブロックの中でメソッドが呼び出されるため、 -// TypeScriptはこのチェックを許可しています。 - -if (plugin.pluginIsActivated) { - plugin.pluginIsActivated(); -} diff --git a/packages/playground-examples/copy/ja/3-8/Breaking Changes/Checking Unions with Index Signatures.ts b/packages/playground-examples/copy/ja/3-8/Breaking Changes/Checking Unions with Index Signatures.ts deleted file mode 100644 index 94c49dc104e6..000000000000 --- a/packages/playground-examples/copy/ja/3-8/Breaking Changes/Checking Unions with Index Signatures.ts +++ /dev/null @@ -1,33 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// 以前のバージョンのTypeScriptでは、 -// インデックスシグネチャを含む共用体に宣言されていないフィールドについて -// 型チェックが行われませんでした。 - -// インデックスシグネチャについてはこちら: example:indexed-types - -// 例えば、以下のIdentifierCacheは、 -// オブジェクトのすべてのキーが、numberであることを表しています。 - -type IdentifierCache = { [key: string]: number }; - -// つまり、以下の例は型チェックエラーとなります。 -// 'file_a'のキーにstringの値が設定されているためです。 - -const cacheWithString: IdentifierCache = { file_a: "12343" }; - -// しかし、IdentifierCacheを共用体に含めると、 -// 以前は、型チェックが行われませんでした。 - -let userCache: IdentifierCache | { index: number }; -userCache = { file_one: 5, file_two: "abc" }; - -// こちらが修正され、コンパイラーから -// 'file_two'のキーについてのエラーが出るようになりました。 - -// この型チェックは、キーの型が異なる場合も考慮に入れられています。 -// 例: ([key: string] and [key: number]) - -type IdentifierResponseCache = { [key: number]: number }; - -let resultCache: IdentifierCache | IdentifierResponseCache; -resultCache = { file_one: "abc" }; diff --git a/packages/playground-examples/copy/ja/3-8/JSDoc Improvements/Accessibility Modifiers.js b/packages/playground-examples/copy/ja/3-8/JSDoc Improvements/Accessibility Modifiers.js deleted file mode 100644 index b6b8cbeebb36..000000000000 --- a/packages/playground-examples/copy/ja/3-8/JSDoc Improvements/Accessibility Modifiers.js +++ /dev/null @@ -1,78 +0,0 @@ -//// { compiler: { ts: "3.8.3" }, isJavaScript: true } -// @ts-check - -// TypeScriptのJSDocが拡張され、クラスプロパティのアクセス修飾子が -// サポートされるようになりました: -// -// @public - 設定しなかった場合のデフォルト -// @private - フィールドが定義されているクラスからのみ -// アクセスできるフィールド -// @protected - フィールドが定義されているクラスとそのクラスの -// サブクラスからアクセスできるフィールド - - -// 以下は、Animalの基底クラスで、privateフィールドとprotectedフィールドの -// 両方を持ちます。サブクラスは"this.isFast"にアクセスできますが、 -// "this.type"にはアクセスできません。 - -// これらのクラスの外側では、両方のフィールドはどちらも表示されず、 -// @ts-checkが有効になっている場合は -// コンパイラエラーとなります: - -class Animal { - constructor(type) { - /** @private */ - this.type = type - /** @protected */ - this.isFast = type === 'cheetah' - } - - makeNoise() { - // おそらく、これらのAnimalはとても静かなのでしょう - if (this.type === 'bengal') { - console.log('') - } else { - throw new Error('makeNoise was called on a base class') - } - } -} - -class Cat extends Animal { - constructor(type) { - super(type || 'housecat') - } - - makeNoise() { - console.log('meow') - } - - runAway() { - if (this.isFast) { - console.log('Got away') - } else { - console.log('Did not make it') - } - } -} - -class Cheetah extends Cat { - constructor() { - super('cheetah') - } -} - -class Bengal extends Cat { - constructor() { - super('bengal') - } -} - -const housecat = new Cat() -housecat.makeNoise() - -// 次のようには利用できません -housecat.type -housecat.isFast - -// 詳細はこちらの記事で確認できます -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#jsdoc-modifiers diff --git a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Export Modules From.ts b/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Export Modules From.ts deleted file mode 100644 index 7259b2753370..000000000000 --- a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Export Modules From.ts +++ /dev/null @@ -1,24 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// TypeScriptの再エクスポート機能が、ES2018で -// 利用可能なより多くのケースをサポートするようになりました。 -// -// JavaScriptのエクスポートには、依存関係の一部を -// 簡潔に再エクスポートする機能があります: - -export { ScriptTransformer } from "@jest/transform"; - -// 以前のバージョンのTypeScriptでは、 -// オブジェクト全体をエクスポートしたい場合には -// すこし冗長でした: - -import * as console from "@jest/console"; -import * as reporters from "@jest/reporters"; - -export { console, reporters }; - -// 3.8では、TypeScriptはより多くのJavaScriptの仕様にある -// エクスポート文の形をサポートすることで、 -// 1行でモジュールを再エクスポートできるようになりました。 - -export * as jestConsole from "@jest/console"; -export * as jestReporters from "@jest/reporters"; diff --git a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Private Class Fields.ts b/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Private Class Fields.ts deleted file mode 100644 index 44f0044574a3..000000000000 --- a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Private Class Fields.ts +++ /dev/null @@ -1,69 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// 3.8ではprivateフィールドが追加されました。これはサブクラスを含め、フィールドを定義しているクラスの外側からは -// アクセスできないようにするクラスフィールドの宣言方法です。 - -// 例えば、以下のPersonクラスでは、どのクラスのインスタンスからも -// firstName、lastName、あるいはprefixを読み取ることはできません。 - -class Person { - #firstName: string; - #lastName: string; - #prefix: string; - - constructor(firstName: string, lastName: string, prefix: string) { - this.#firstName = firstName; - this.#lastName = lastName; - this.#prefix = prefix; - } - - greet() { - // アイスランドでは[prefix] [lastname]の代わりにフルネームを用いることが好ましいです - // https://www.w3.org/International/questions/qa-personal-names#patronymic - if (navigator.languages[0] === "is") { - console.log(`Góðan dag, ${this.#firstName} ${this.#lastName}`); - } else { - console.log(`Hello, ${this.#prefix} ${this.#lastName}`); - } - } -} - -let jeremy = new Person("Jeremy", "Bearimy", "Mr"); - -// このクラスの外からは、privateフィールドにアクセスできません: - -// 例えば、これは動作しません: -console.log(jeremy.#lastName); - -// これも動作しません: -console.log("Person's last name:", jeremy["#lastName"]); - -// よくある質問は、"なぜクラスフィールドの'private'キーワードよりもこちらを使うのか?" -// というものです。 -// では、3.8以前のTypeScriptでのふるまいと比較してみましょう。 - -class Dog { - private _name: string; - constructor(name: string) { - this._name = name; - } -} - -let oby = new Dog("Oby"); -// ドット記法でのアクセスはできません -oby._name = "Spot"; -// しかし、TypeScriptでは抜け道としてブラケット記法を使えてしまいます -oby["_name"] = "Cherny"; - -// privateキーワードのTypeScriptの参照は型レベルでしか存在しないので -// 型レベルまでしか信用できません。 -// 一方で、privateフィールドは近いうちにJavaScript言語の一部となるので -// そうなればコードの可視性をより強く保証できるようになります。 - -// TypeScriptの`private`フィールドキーワードを廃止する予定はないので、 -// 既存のコードは引き続き動作します。今では、`private`キーワードの代わりに -// よりJavaScriptに近いコードを書くこともできるようになりました。 - -// クラスフィールドについての詳細はtc39の提案 -// https://github.com/tc39/proposal-class-fields/ -// とベータ版リリースノートを参照してください: -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#ecmascript-private-fields diff --git a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Type Imports.tsx b/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Type Imports.tsx deleted file mode 100644 index 1101a1a35676..000000000000 --- a/packages/playground-examples/copy/ja/3-8/Syntax and Messaging/Type Imports.tsx +++ /dev/null @@ -1,50 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// 3.8では、型をインポートするための新しい構文を追加しました。 -// これはflowユーザーにはおなじみのものです。 - -// 'import type'は、型のみのインポートを宣言する方法を提供します。 -// これは、とても予測可能な方法でJavaScriptに変換される際に -// そのコードが削除されると確信できることを意味します。 -// なぜなら、型は必ず削除されるからです! - -// 例えば、次の行は決してimportやrequireを追加しません -import type { CSSProperties } from 'react'; - -// 型としてここで使用されています -const style: CSSProperties = { - textAlign: 'center' -}; - -// これは次のimportとは対照的で、 -import * as React from 'react'; - -// JavaScriptに含まれることになります -export class Welcome extends React.Component { - render() { - return ( -
-

Hello, world

-
- ) - } -} - -// しかし、typeなしの'import'が型だけをインポートする場合 - それもまた -// 削除されます。コンパイルされたJSの出力を見ると、 -// このimportは含まれません。 - -import { FunctionComponent } from 'react'; - -export const BetaNotice: FunctionComponent = () => { - return

This page is still in beta

-} - -// これはインポート省略と呼ばれ、混乱のもとになります。 -// 'import type'構文を使うと、JavaScriptで何をしたいのかを -// 具体的に指定することができます。 - -// 以上は'import types'の -// 主なユースケースの一つについての簡単な概要ですが、 -// 3.8のリリースノートにてさらなる詳細を読むことができます。 - -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#type-only-imports-exports diff --git a/packages/playground-examples/copy/ja/4-0/New Checks/Class Constructor Code Flow.ts b/packages/playground-examples/copy/ja/4-0/New Checks/Class Constructor Code Flow.ts deleted file mode 100644 index 2aed0c1d2dbb..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New Checks/Class Constructor Code Flow.ts +++ /dev/null @@ -1,19 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// 4.0では、コントロールフロー解析を利用し、 -// コンストラクタで設定された値に基づいて -// クラスプロパティの潜在的な型を推測します。 - -class UserAccount { - id; // 型は次のように推測されます: string | number - constructor(isAdmin: boolean) { - if (isAdmin) { - this.id = "admin"; - } else { - this.id = 0; - } - } -} - -// 以前のバージョンのTypeScriptでは、`id`は -// `any`と推測されていました。 diff --git a/packages/playground-examples/copy/ja/4-0/New JS Features/JSDoc Deprecated.ts b/packages/playground-examples/copy/ja/4-0/New JS Features/JSDoc Deprecated.ts deleted file mode 100644 index a21cde68e5c5..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New JS Features/JSDoc Deprecated.ts +++ /dev/null @@ -1,19 +0,0 @@ -// 4.0では、JSDocのタグである@deprecatedが型システムに -// 追加されました。今現在JSDocを使用しているところであれば -// どこでも@deprecatedを使用できます。 - -interface AccountInfo { - name: string; - gender: string; - - /** @deprecated 代わりにgenderフィールドを使用してください */ - sex: "male" | "female"; -} - -declare const userInfo: AccountInfo; -userInfo.sex; - -// TypeScriptは、非推奨のプロパティにアクセスしたとき、 -// 処理を止めることはありませんが、警告を出します。 -// vscodeなどのエディタであればintellisenseやアウトライン、 -// コード内で、deprecatedタグの情報を表示します。 diff --git a/packages/playground-examples/copy/ja/4-0/New JS Features/Logical Operators and Assignment.ts b/packages/playground-examples/copy/ja/4-0/New JS Features/Logical Operators and Assignment.ts deleted file mode 100644 index c40c84ed9064..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New JS Features/Logical Operators and Assignment.ts +++ /dev/null @@ -1,41 +0,0 @@ -// 論理代入演算子は、 -// 2020年のJavaScriptの新しい機能であり、 -// JavaScriptのオブジェクトを編集できる新しい演算子のグループです。 - -// これら新しい演算子の目的は、数学的演算子(例えば+= -= *=)の概念を再利用しつつ -// 論理を用いることです。 - -interface User { - id?: number - name: string - location: { - postalCode?: string - } -} - -function updateUser(user: User) { - // 次のコードや - if (!user.id) user.id = 1 - - // あるいは次のコードも - user.id = user.id || 1 - - // 以下のコードに置き換えることができます: - user.id ||= 1 -} - -// これらの演算子は、プロパティの深いネストを扱うことができるため、 -// それによってかなり多くの定型的なコードも節約することができます。 - -declare const user: User -user.location.postalCode ||= "90210" - -// 新しい演算子は3つあります: -// -// ||= 上述のとおり -// &&= 論理積('or')の代わりに、論理和('and')を使用します -// ??= example:nullish-coalescingを発展させたもので、 -// === を代わりに使う || のより厳密なバージョンです - -// 提案の詳細についてはこちらを確認してください: -// https://github.com/tc39/proposal-logical-assignment diff --git a/packages/playground-examples/copy/ja/4-0/New JS Features/Nullish Coalescing.ts b/packages/playground-examples/copy/ja/4-0/New JS Features/Nullish Coalescing.ts deleted file mode 100644 index 3c1fa47728ac..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New JS Features/Nullish Coalescing.ts +++ /dev/null @@ -1,40 +0,0 @@ -// # Nullish Coalescing -// -// 新しい演算子である`??`は、 -// `===`がより厳密な等価の形として`==`を補うのと同じく、 -// `||`の一般的な使い方を補強します。 -// -// 理解をすすめるために、まずは || がどのような動作をするのか見てみましょう: - -const response = { - nullValue: null, - headerText: "", - animationDuration: 0, - height: 400, - showSplashScreen: false, -} as const; - -const undefinedValue = response.undefinedValue || "some other default"; -// これは'some other default'となります - -const nullValue = response.nullValue || "some other default"; - -// 上記2つの例はたいていの言語でも同じようにふるまいます。 -// || はなにかのデフォルト値を設定するツールとしてはとても優秀です。 -// しかし、JavaScriptのfalsyチェックはよく使われる値に対して驚くような動作をすることがあります。 - -// 意図しない結果かもしれませんが、''は偽であり、次の値は'Hello, world!'となります -const headerText = response.headerText || "Hello, world!"; - -// 意図しない結果かもしれませんが、0は偽であり、次の値は300となります -const animationDuration = response.animationDuration || 300; - -// 意図しない結果かもしれませんが、falseは偽であり、次の値はtrueとなります -const showSplashScreen = response.showSplashScreen || true; - -// || の代わりに ?? を使うと、 -// === 演算子が両サイドの比較に使用されます: - -const emptyHeaderText = response.headerText ?? "Hello, world!"; -const zeroAnimationDuration = response.animationDuration ?? 300; -const skipSplashScreen = response.showSplashScreen ?? true; diff --git a/packages/playground-examples/copy/ja/4-0/New TS Features/Named Tuples.ts b/packages/playground-examples/copy/ja/4-0/New TS Features/Named Tuples.ts deleted file mode 100644 index 7010538a8438..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New TS Features/Named Tuples.ts +++ /dev/null @@ -1,49 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } -// タプルは型システムにとって順序が重要な配列です。 -// example:tuplesでタプルについてもっと詳しく学ぶことができます。 - -// TypeScript 4.0では、タプル型において、配列の様々な部分に名前をつけることが -// できるようになりました。 - -// 例えば、以前はタプルを使って次のように緯度経度を書いていました: - -type OldLocation = [number, number] - -const locations: OldLocation[] = [ - [40.7144, -74.006], - [53.6458, -1.785] -] - -// どちらが緯度でどちらが経度なのか、わかり辛いので -// このタプルをLatLongと名付けたほうがよかったかもしれません。 - -// 4.0では次のように記述できます: - -type NewLocation = [lat: number, long: number] - -const newLocations: NewLocation[] = [ - [52.3702, 4.8952], - [53.3498, -6.2603] -] - -// 次の行の最後にある0と1にマウスをホバーすると -// エディタに名前が表示されるようになりました -const firstLat = newLocations[0][0] -const firstLong = newLocations[0][1] - -// これだけだとちょっと印象が薄いかもしれません。 -// しかし、この機能が追加された主な目的は型システムを使って -// 作業する際に情報が失われないようにすることです。 -// 例えば、組み込みのParameters型を使って -// 関数からパラメータを抽出する場合を考えてみましょう: - -function centerMap(lng: number, lat: number) {} - -// 4.0では、抽出したパラメータにlngとlatが保持されています -type CenterMapParams = Parameters - -// 3.9では、次のようになります -type OldCenterMapParams = [number, number] - -// より複雑な型の操作によって、 -// パラメータの情報が失われることがあります。 diff --git a/packages/playground-examples/copy/ja/4-0/New TS Features/Unknown in Catch.ts b/packages/playground-examples/copy/ja/4-0/New TS Features/Unknown in Catch.ts deleted file mode 100644 index 7752b77b5015..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New TS Features/Unknown in Catch.ts +++ /dev/null @@ -1,36 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// JavaScriptはどんな値もthrowできるため、 -// TypeScriptはエラーの型宣言をサポートしていません。 - -try { - // .. -} catch (e) {} - -// 歴史的には、上記は、catch句の`e`はデフォルトが -// anyであることを意味していました。 -// したがって、`e`の任意のプロパティに自由にアクセスできます。 -// 4.0では、catch句における型の割り当ての制限を緩め、 -// `any`と`unknown`の両方を許可するようにしました。 - -// any型を付けた場合と同じふるまい: -try { - // .. -} catch (e) { - e.stack; -} - -// unknown型を明示した場合のふるまい: - -try { - // .. -} catch (e: unknown) { - // 型システムが、`e`がどんな型なのかを知るまで - // `e`を利用することはできません。詳細は以下を確認してください: - // example:unknown-and-never - e.stack; - - if (e instanceof SyntaxError) { - e.stack; - } -} diff --git a/packages/playground-examples/copy/ja/4-0/New TS Features/Variadic Tuples.ts b/packages/playground-examples/copy/ja/4-0/New TS Features/Variadic Tuples.ts deleted file mode 100644 index 73e0dd567f04..000000000000 --- a/packages/playground-examples/copy/ja/4-0/New TS Features/Variadic Tuples.ts +++ /dev/null @@ -1,53 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } -// 可変長タプルによって、タプルはジェネリクスのように -// 型を型チェッカーに渡すことができるrest演算子(...)を扱えるようになりました。 - -// かなり高度なトピックなので、理解できなくでもあまり心配しないでください。 -// これはexample:generic-functionsとexample:tuplesの発展です。 - -// 手始めに、別のタプルの前に常に数字を付けている可変長タプルを -// 見てみましょう: - -type AddMax = [max: number, ...rest: T]; -// ^ ジェネリクスでTをタプルに制限しています -// ^ ... でどこにマージするかを示しています - -// これは次のように型を合成することができます: -type MaxMin = AddMax<[min: number]> -type MaxMinDiameter = AddMax<[min: number, diameter: number]> - -// タプルの後ろに型があっても同様です: -type SuffixDIContext = [...first: T, context: any]; -type DIContainer = SuffixDIContext<[param: string]> - -// この仕組みは、複数の入力パラメータと組み合わせることができます。 -// 例えば、次の関数は、配列の開始と終了を表す印として -// '\0'を使用して2つの配列をマージします。 -function joinWithNullTerminators(t: [...T], u: [...U]) { - return ['\0', ...t, '\0', ...u, '\0'] as const; -} - -// TypeScriptは次のように関数の戻り値の型を推測することができます: -const result = joinWithNullTerminators(['variadic', 'types'], ["terminators", 3]); - -// これらを使うことで、関数型プログラミングでよく使われる概念であるカリー化関数などの関数に -// 正しく型をつけることができるようになります。 - -function curry(f: (...args: [...T, ...U]) => R, ...a: T) { - return (...b: U) => f(...a, ...b); -} - -// ここでは、3つのジェネリクス引数が使われています: -// - T: カリー化関数への入力の配列であるパラメータ -// - U: カリー化関数に _渡されておらず_ 戻り値の関数に適用される必要があるパラメータ -// - R: カリー化関数に渡された関数の戻り値の型 - -const sum = (left: number, right: number,) => left + right - -const a = curry(sum, 1, 2) -const b = curry(sum, 1)(2) -const c = curry(sum)(1, 2) - -// そのほか詳細な説明とコードサンプルはこちら: -// https://github.com/microsoft/TypeScript/pull/39094 - diff --git a/packages/playground-examples/copy/ja/4-1/New JS Features/New JSX Support.ts b/packages/playground-examples/copy/ja/4-1/New JS Features/New JSX Support.ts deleted file mode 100644 index 45394d653343..000000000000 --- a/packages/playground-examples/copy/ja/4-1/New JS Features/New JSX Support.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { compiler: { ts: "4.1.0-dev.20201028", jsx: 4 } } - -// Reactのバージョン17には、JSXを変換する際に -// 出力されるJavaScriptに新しい形式が導入されました。 -// 出力されたJavaScriptはプレイグラウンド右側の -// ".JS"タブで確認できます。 - -import { useState } from "react"; - -export function ExampleApp() { - const [count, setCount] = useState(0); - - return ( -
-

You clicked {count} times

- -
- ); -} - -// 以下は、主な変更点の抜粋です: -// -// - React識別子の代わりとなる関数が、`import`を介して提供される -// - 単一要素(jsx)と複数の子要素(jsxs)にそれぞれ異なる関数が使用される -// - keyがpropsから切り離される -// -// 上記の変更が実装されているRFCは以下で読むことができます: -// https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md - -// こうした変更のほとんどは内部的なものであり、 -// エンドユーザーがJSXのコードを記述することに -// 影響はありません。 diff --git a/packages/playground-examples/copy/ja/4-1/New JS Features/See in JSDoc.ts b/packages/playground-examples/copy/ja/4-1/New JS Features/See in JSDoc.ts deleted file mode 100644 index 2c00c9fb43d5..000000000000 --- a/packages/playground-examples/copy/ja/4-1/New JS Features/See in JSDoc.ts +++ /dev/null @@ -1,21 +0,0 @@ -//// { compiler: { ts: "4.1.0-beta" } } - -// 4.1では、TypeScriptとJavaScriptファイルの両方で -// 使われているTypeScriptのJSDocパーサが -// @seeパラメータをサポートします。 - -// @seeを使えば、クリック(cmd/ctrl + クリック)するか、 -// あるいはマウスをホバーした時に表示される情報から -// 関連するコードに素早くアクセスすることができます。 - -/** - * @see hello - */ -const goodbye = "Good"; - -/** - * You say hi, I say low - * - * @see goodbye - */ -const hello = "Hello, hello"; diff --git a/packages/playground-examples/copy/ja/4-1/Template Literals/Intro to Template Literals.ts b/packages/playground-examples/copy/ja/4-1/Template Literals/Intro to Template Literals.ts deleted file mode 100644 index f5f2f2684838..000000000000 --- a/packages/playground-examples/copy/ja/4-1/Template Literals/Intro to Template Literals.ts +++ /dev/null @@ -1,50 +0,0 @@ -//// { compiler: { ts: "4.1.0-dev.20201028" } } - -// TypeScriptでは、すでに厳密な文字列/数値をリテラルとして -// 扱うことができます。例えば、次の関数は厳密な文字列を -// 2つだけ許可し、それ以外は許可しません。 - -declare function enableFeature(command: "redesign" | "newArtistPage"): void; -enableFeature("redesign"); -enableFeature(`newArtistPage`); -enableFeature("newPaymentSystem"); - -// 文字列リテラルはES2020で記述できるすべての文字列の記述方法をサポートしています。 -// さらに、TypeScript 4.1では、サポートを拡張し、 -// テンプレート文字列リテラルへの文字列挿入ができるようになりました。 - -type Features = "Redesign" | "newArtistPage"; - -// 次の型は上記のUnion型であるFeaturesを使用し、 -// Union型の各要素を変換して文字列の後ろに`-branch`を追加します。 -type FeatureBranch = `${Features}-branch`; - -// 4.1では、文字列を操作するためにテンプレートリテラル内で使用できる -// ジェネリクスのような新しいキーワードのセットをサポートしています。 -// そのキーワードとは、Uppercase、Lowercase、Capitalize、Uncapitalizeです。 - -type FeatureID = `${Lowercase}-id`; -type FeatureEnvVar = `${Uppercase}-ID`; - -// Union型を構成する文字列は掛け合わされます。 -// したがって、複数のUnion型を使用した場合、Union型を構成するそれぞれの型は、 -// 他のUnion型を構成するそれぞれの型に対して評価されます。 - -type EnabledStates = "enabled" | "disabled"; -type FeatureUIStrings = `${Features} is ${EnabledStates}`; - -// このことにより、それぞれのUnion型の要素の -// すべての可能な組み合わせが考慮されることが保証されます。 - -// 次の型では、インデックスシグネチャと併用することで -// プロパティキーのリストを素早く作成することができます。 - -type SetFeatures = { - [K in FeatureID]: boolean -}; - -// テンプレートリテラルについて続けて学ぶ場合はこちらを参照してください: -// example:mapped-types-with-template-literals - -// もしくはこちらの告知ブログ記事をご覧ください: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types diff --git a/packages/playground-examples/copy/ja/4-1/Template Literals/Mapped Types with Template Literals.ts b/packages/playground-examples/copy/ja/4-1/Template Literals/Mapped Types with Template Literals.ts deleted file mode 100644 index f1b34d4935ca..000000000000 --- a/packages/playground-examples/copy/ja/4-1/Template Literals/Mapped Types with Template Literals.ts +++ /dev/null @@ -1,54 +0,0 @@ -//// { compiler: { ts: "4.1.0-dev.20201028" } } - -// TypeScript 4.1では、テンプレートリテラルがサポートされました。 -// テンプレートリテラルの基本はexample:intro-to-template-literalsで学ぶことができます。 - -// また、Mapped Type宣言に新しい構文が4.1で追加されました。 -// これにより、"as `templated string`"の形で -// Union型の文字列変換ができるようになります。 - -// 例えば、次の型は既存の型のすべてのプロパティを -// 従来のRESTの呼び出しに対応する4つの関数に変換します。 - -// 各APIのエンドポイントを記述するための文字列のテンプレートリテラル: -type GET = `get${Capitalize}` -type POST = `post${Capitalize}` -type PUT = `put${Capitalize}` -type DELETE = `delete${Capitalize}` - -// 上記のリテラル型のUnion -type REST = GET | POST | PUT | DELETE - -// 型を引数に取り、その型にあるそれぞれの文字列プロパティに対して、 -// 上記のREST型をマッピングし、4つの関数を作成します。 - -type RESTify = { - [Key in keyof Type as REST]: () => Type[Key] -}; - -// オブジェクトのキーは文字列、数値、シンボルをとりうるため、 -// `Key extends string ? Key : never`が必要になります。 -// これにより、この型はキーが文字列のケースのみを扱うことができます。 - -// 次に、APIから利用可能なオブジェクトのリストを作ります: - -interface APIs { - artwork: { id: string, title: string}; - artist: { id: string, name: string}; - location: { id: string, address: string, country: string } -} - -// そして、上記の型を使用するオブジェクトを宣言します: -declare const api: RESTify - -// そうすると、下記の関数がすべて自動的に作成されます -api.getArtist() -api.postArtist() -api.putLocation() - -// テンプレートリテラルについて続けて詳しく学びたい場合は以下を参照してください: -// example:string-manipulation-with-template-literals - -// もしくは告知ブログ記事をご覧ください: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types - diff --git a/packages/playground-examples/copy/ja/4-1/Template Literals/String Manipulation with Template Literals.ts b/packages/playground-examples/copy/ja/4-1/Template Literals/String Manipulation with Template Literals.ts deleted file mode 100644 index 1e75fe980bf0..000000000000 --- a/packages/playground-examples/copy/ja/4-1/Template Literals/String Manipulation with Template Literals.ts +++ /dev/null @@ -1,97 +0,0 @@ -//// { compiler: { ts: "4.1.0-dev.20201028" } } - -// 文字列リテラル型を抽出し操作するためにテンプレートリテラルを使用することができます。 -// そのようにして抽出した文字列リテラル型は、今度はプロパティとして使用することができ、 -// それにより、API内で文字列からのオブジェクトへと変換するための記述が可能になります。 - -// ## オブジェクトへの文字列の分割 - -// テンプレートリテラルは、あるパターンを"分割点"として使用して、 -// その間の部分文字列を推測することができます。例えば... - -// 次の型はセマンティクスバージョニングに準拠した文字列リテラルです。 -type TSVersion = "4.1.2" - -// この文字列を構成する要素を抽出する型を作ることができます。 -// 2つの'.'を中間点として、文字列を分割してみましょう。 -type ExtractSemver = - SemverString extends `${infer Major}.${infer Minor}.${infer Patch}` ? - { major: Major, minor: Minor, patch: Patch } : { error: "Cannot parse semver string" } - -// 1行目は次のexampleを見たことがあるならば、なじみがあるでしょう: -// example:intro-to-template-literals / example:mapped-types-with-template-literals - -// 2行目はConditional Typeで、TypeScriptはSemverStringパラメータに対して -// inferをつかったこのパターンが一致するかどうかを検証します。 - -// 3行目はConditional Typeの結果です。条件が真ならば、それぞれのポジションに渡された -// 部分文字列をもつオブジェクトを返します。 -// 文字列がパターンに一致しないならば、エラーメッセージをもつオブジェクトの型を返します。 - -type TS = ExtractSemver - -// この型はセマンティクスバージョニングを100%サポートしているわけではありません。例えば、次の例を見てみましょう: -type BadSemverButOKString = ExtractSemver<"4.0.Four.4444"> - -// 一方で、ExtractSemverではそのフォーマットに一致しない文字列はエラーになります。 -// このケースでは文字列が"X.Y.Z"というフォーマットである場合のみマッチします。次の行はそうなっていないため、マッチしません: -type SemverError = ExtractSemver<"Four point Zero point Five"> - -// ## 再帰的な文字列分割 - -// 前述の例は厳密にマッチする文字列の場合には動作します。しかし、 -// もっとあいまいなケースではTypeScript 4.0の機能example:variadic-tuplesを利用したい場合があるでしょう。 - -// 文字列を再利用可能な要素に分割するとき、タプルを使えばうまく結果を追跡できます。 -// Split型の例を次に示します: - -type Split = - string extends S ? string[] : - S extends '' ? [] : - S extends `${infer T}${D}${infer U}` ? [T, ...Split] : [S]; - -// 1行目は2つのパラメータを宣言しています。ここでは簡潔にするため、1文字を使います。 -// Sは分割したい文字列を、Dは区切り文字を表します。 -// この行で、これら2つのパラメータが確実に文字列であることを保証します。 - -// 2行目は入力文字列から一般的な文字列に拡張できるか検証して、文字列がリテラルかどうかをチェックします。 -// もしそうならば、文字列の配列を返します。 -// リテラルではない文字列を扱うことができないためです。 - -// 例: 次のようなケース: -type S1 = Split - -// 3行目は文字列が空かどうかをチェックし、もしそうならば空のタプルを返します。 -type S2 = Split<"", "."> - -// 4行目には、ExtractSemverと同様のチェックがあります。 -// 入力文字列が`[接頭辞(T)][区切り文字][接尾辞(U)]`にマッチする場合は、 -// 接頭辞(T)をタプルの最初のパラメータとして抽出します。次に、接尾辞(U)に対してSplitを再実行して、 -// 複数回のマッチに対応できるようにします。 -// -// 入力文字列に区切り文字が含まれていない場合は、 -// 引数(S)として渡された文字列を含む、長さ1のタプルを返します。 - -// シンプルなケース -type S3 = Split<"1.2", "."> - -// すべての.で分割するために一度再帰呼び出しを行うケース -type S4 = Split<"1.2.3", "."> - -// この知識があれば、かなりの数のテンプレートリテラルのコミュニティの例を読んで -// 理解できるようになるはずです。例えば: -// -// - Dan Vanderkamによる、express route extractor -// https://twitter.com/danvdk/status/1301707026507198464 -// -// - Mike Ryanによる、document.querySelectorの定義 -// https://twitter.com/mikeryandev/status/1308472279010025477 -// -// テンプレート文字列リテラルを使った非常に複雑な -// 文字列パーサの実験も行われています。面白い試みですが、 -// 本番のコードベースで使用することは推奨されていません。 -// -// https://github.com/ghoullier/awesome-template-literal-types -// -// また、告知ブログ記事もご覧ください: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types diff --git a/packages/playground-examples/copy/ja/JavaScript/External APIs/TypeScript with Deno.ts b/packages/playground-examples/copy/ja/JavaScript/External APIs/TypeScript with Deno.ts deleted file mode 100644 index 8b800e747ba0..000000000000 --- a/packages/playground-examples/copy/ja/JavaScript/External APIs/TypeScript with Deno.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { order: 3 } - -// Denoはセキュリティに重点を置いた開発中のv8ベースの -// JavaScript及びTypeScriptのランタイムです。 - -// https://deno.land - -// DenoはJavaScriptのファイルシステムやネットワークへのアクセスを減らす -// サンドボックスベースの権限システムを採用し、 -// ローカルにダウンロードとキャッシュされるhttpベースのインポートを使用します。 - -// 以下はdenoを使用した例です: - -import compose from "https://deno.land/x/denofun/lib/compose.ts"; - -function greet(name: string) { - return `Hello, ${name}!`; -} - -function makeLoud(x: string) { - return x.toUpperCase(); -} - -const greetLoudly = compose(makeLoud, greet); - -// "HELLO, WORLD!."を出力します -greetLoudly("world"); - -import concat from "https://deno.land/x/denofun/lib/concat.ts"; - -// "helloworld"を返します -concat("hello", "world"); diff --git a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Enums.ts b/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Enums.ts deleted file mode 100644 index 93b2dfe1ef7d..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Enums.ts +++ /dev/null @@ -1,81 +0,0 @@ -// EnumはTypeScriptを用いてJavaScriptで -// 固定値の集合を簡単に扱うための機能です。 - -// デフォルトでは、Enumは0から始まり -// オプション1つにつき1ずつ増加していく数値です。 -// これは値が重要でないときに便利です。 - -enum CompassDirection { - North, - East, - South, - West, -} - -// Enumオプションに注釈を付けると、値を設定できます。 -// 注釈をつけなければ、値のインクリメントは設定された値を引き継いで行われます。 - -enum StatusCodes { - OK = 200, - BadRequest = 400, - Unauthorized, - PaymentRequired, - Forbidden, - NotFound, -} - -// EnumはEnum名.値名で参照できます。 - -const startingDirection = CompassDirection.East; -const currentStatus = StatusCodes.OK; - -// Enumはキーから値と値からキーの双方による -// アクセスをサポートしています。 - -const okNumber = StatusCodes.OK; -const okNumberIndex = StatusCodes["OK"]; -const stringBadRequest = StatusCodes[400]; - -// Enumに異なる型を設定することもできます。文字列型が一般的です。 -// 文字列型を用いると、実行時に数字を探す必要がなくなるので、 -// デバッグが簡単になります。 - -enum GamePadInput { - Up = "UP", - Down = "DOWN", - Left = "LEFT", - Right = "RIGHT", -} - -// もし、JavaScriptの実行時にobjectの数を減らしたいなら、 -// const enumが使えます。 - -// const enumの値は -// 実行時にobjectを介して対応する値を見つけるのではなく、 -// TypeScriptによるコードのトランスパイル時に置換されます。 - -const enum MouseAction { - MouseDown, - MouseUpOutside, - MouseUpInside, -} - -const handleMouseAction = (action: MouseAction) => { - switch (action) { - case MouseAction.MouseDown: - console.log("Mouse Down"); - break; - } -}; - -// トランスパイルされたJavaScriptのコードを見ると、 -// 他のEnumはobjectや関数として残っているのに、 -// MouseActionだけが残っていないことに気がつくでしょう。 - -// これは、handleMouseActionのswitch文にある -// MouseAction.MouseDownについても同様です。 - -// Enumには他にも多くの機能があります。 -// 詳しくはTypeScriptハンドブックをご覧ください。 -// -// https://www.typescriptlang.org/docs/handbook/enums.html diff --git a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Nominal Typing.ts b/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Nominal Typing.ts deleted file mode 100644 index 65daa0e21389..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Nominal Typing.ts +++ /dev/null @@ -1,66 +0,0 @@ -// 公称型システムではそれぞれの型がユニークであり、 -// ある2つの型が同じデータ構造をしていても -// 型をまたいで代入することはできません - -// TypeScriptの型システムは構造的です。 -// 構造的型システムでは、ある型がアヒル型と同じ構造をしていたら、それをアヒル型として扱います。 -// また、ガチョウ型がアヒル型とまったく同じ属性を持っていたら、ガチョウ型はアヒル型としても扱われます。 -// より詳しいことはこちらをご覧ください: example:structural-typing - -// これにはいくつかの欠点があります。 -// 文字列や数値が特別なコンテキストを持っており、 -// 他の値に変換可能にしたくない場合などが該当します。 -// 例: -// -// - ユーザーの入力した安全でない文字列 -// - 翻訳された文字列 -// - ユーザー識別番号 -// - アクセストークン - -// 少しの余分なコードを足すだけで、 -// 公称型システムと同じような恩恵に預かることができます。 - -// 交差型を用いて、__brand (この名前は慣習的なもの)という -// プロパティを持つ型を作成し、 -// 通常の文字列が代入不可能な -// ValidatedInputStringという型を作ってみましょう。 - -type ValidatedInputString = string & { __brand: "User Input Post Validation" }; - -// 文字列をValidatedInputString型に変換するために関数を使います。 -// 注目に値するのは、validateUserInputを通過した文字列はValidatedInputStringだと -// TypeScriptに_伝えて_いる点です。 - -const validateUserInput = (input: string) => { - const simpleValidatedInput = input.replace(/\ { - console.log(name); -}; - -// 例えば、ユーザーからの安全でない入力を受け取り、 -// バリデーターに通してから出力してみます。 - -const input = "\n"; -const validatedInput = validateUserInput(input); -printName(validatedInput); - -// 一方でバリデートしていない文字列をprintNameに渡すと、 -// コンパイルエラーが発生します。 - -printName(input); - -// 以下の400コメントがついたGitHubのissueに、 -// 公称型を作成する色々な方法のまとめと -// それらのトレードオフがまとまっています: -// -// https://github.com/Microsoft/TypeScript/issues/202 -// -// 他にも以下の記事が分かりやすいまとめになっています: -// -// https://michalzalecki.com/nominal-typing-in-typescript/ diff --git a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Types vs Interfaces.ts b/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Types vs Interfaces.ts deleted file mode 100644 index 4bc7c91b2e9d..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Language Extensions/Types vs Interfaces.ts +++ /dev/null @@ -1,83 +0,0 @@ -// オブジェクトの形を宣言するのに使う -// 2つの主なツールがinterfaceとtype aliasです。 -// -// これらはとても似ており、ほとんどの場合、 -// 同じ振る舞いをします。 - -type BirdType = { - wings: 2; -}; - -interface BirdInterface { - wings: 2; -} - -const bird1: BirdType = { wings: 2 }; -const bird2: BirdInterface = { wings: 2 }; - -// TypeScriptは構造的型システムを採用しているので、 -// どちらの使い方も混在させることができます。 - -const bird3: BirdInterface = bird1; - -// どちらも他のinterfaceやtypeからの拡張をサポートしています。 -// type aliasは交差型を、 -// interfaceはextendsキーワードを使用します。 - -type Owl = { nocturnal: true } & BirdType; -type Robin = { nocturnal: false } & BirdInterface; - -interface Peacock extends BirdType { - colourful: true; - flies: false; -} -interface Chicken extends BirdInterface { - colourful: false; - flies: false; -} - -let owl: Owl = { wings: 2, nocturnal: true }; -let chicken: Chicken = { wings: 2, colourful: false, flies: false }; - -// そうは言っても、type aliasよりもinterfaceを使うことをおすすめします。 -// 具体的には、より良いエラーメッセージが得られるからです。 -// 以下のエラーにマウスオーバーしてみると、 -// Chickenのようなinterfaceを使ったときの方が簡潔でより分かりやすいメッセージが -// TypeScriptより示されているのが分かるでしょう。 - -owl = chicken; -chicken = owl; - -// type aliasとinterfaceの最も大きな違いの1つは、 -// interfaceが開かれた型であるのに対して、type aliasは閉じた型であることです。 -// これは、interfaceは2回目の宣言で拡張が可能であることを -// 意味します。 - -interface Kitten { - purrs: boolean; -} - -interface Kitten { - colour: string; -} - -// 一方で、type aliasは一度宣言した後に、 -// 外からその型の内容を変更することはできません。 - -type Puppy = { - color: string; -}; - -type Puppy = { - toys: number; -}; - -// 達成したい目標に依って、この違いは利点にも欠点にもなり得ます。 -// しかし、公開される型については -// interfaceを用いる方が良いでしょう。 - -// type aliasとinterfaceにおけるすべてのエッジケースを確認するのに -// 最適な資料の1つである以下のstack overflowスレッドは -// 初めの一歩にちょうど良いでしょう: - -// https://stackoverflow.com/questions/37233735/typescript-interfaces-vs-types/52682220#52682220 diff --git a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Conditional Types.ts b/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Conditional Types.ts deleted file mode 100644 index 627c1ca9e372..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Conditional Types.ts +++ /dev/null @@ -1,109 +0,0 @@ -// Conditional TypesはTypeScriptの型システムに -// 簡単なロジックを組み込む方法を提供します。 -// これは非常に高度な機能のため、 -// 日々の開発において使わないことも十分に可能です。 - -// Conditional Typesは以下のような形です: -// -// A extends B ? C : D -// -// 条件部はある型がある式を拡張しているかを定義し、 -// 条件を満たす場合にどの型を返すかを定義します。 - -// いくつかの例を見てみましょう。 -// ここでは簡潔さのためにジェネリクスに単一の文字を使用していきます。 -// これは任意ですが、 -// 60文字に制限すると画面に収まり難くなります。 - -type Cat = { meows: true }; -type Dog = { barks: true }; -type Cheetah = { meows: true; fast: true }; -type Wolf = { barks: true; howls: true }; - -// 以下のように吠える(barks)動物の型だけを -// 抜き出すConditional Typesを作れます。 - -type ExtractDogish = A extends { barks: true } ? A : never; - -// 次に、ExtractDogishで包んだ型を作成します: - -// 猫は吠えないので、neverが返ります。 -type NeverCat = ExtractDogish; -// 狼は吠えるので、狼の型 (Wolf) が返ります。 -type Wolfish = ExtractDogish; - -// これは多くの型を含む共用型を扱って、 -// その共用型に含まれる型の数を -// 絞りたい際に有用です: - -type Animals = Cat | Dog | Cheetah | Wolf; - -// 共用型にExtractDogish型を適用するのは、 -// その共用型に含まれるそれぞれの型に -// ExtraDogishの条件を当てはめるのと同じです: - -type Dogish = ExtractDogish; - -// = ExtractDogish | ExtractDogish | -// ExtractDogish | ExtractDogish -// -// = never | Dog | never | Wolf -// -// = Dog | Wolf (example:unknown-and-never を参照) - -// これは共用型のそれぞれの型にConditional Typesが割り当てられるため、 -// Distributive Conditional Typesと呼ばれます。 - -// Deferred Conditional Types - -// Conditional Typesは、入力によって異なる型を返すようなAPIの -// 型を絞ることにも使えます。 - -// 例えば、この関数は引数に渡される真偽値に応じて -// 文字列型か数値型のどちらかを返します。 - -declare function getID(fancy: T): T extends true ? string : number; - -// 型システムが真偽値についてどの程度知っているかによって、 -// 異なる返り値の型を得られます。 - -let stringReturnValue = getID(true); -let numberReturnValue = getID(false); -let stringOrNumber = getID(Math.random() < 0.5); - -// 上記の例では、TypeScriptは返り値についてすぐに知ることができました。 -// しかし、型が未知のときでも -// 関数の中でConditional Typesを使えます。 -// これはDeferred Conditonal Typesと呼ばれます。 - -// 上記のDogish型と同じですが、今回は関数です。 -declare function isCatish(x: T): T extends { meows: true } ? T : undefined; - -// 他にもConditional Typesで有用なツールがあります。これは遅延評価時に -// 型について推論をすべしとTypeScriptに明確に指示できるものです。 -// それは'infer'キーワードです。 - -// inferは一般的にはコードの中の既存の型を検査して、 -// 型の中で新しい変数として扱う -// メタ型を作るのに使われます。 - -type GetReturnValue = T extends (...args: any[]) => infer R ? R : T; - -// 大まかには: -// -// - 上記は型引数を取るGetReturnValueという -// 条件付きジェネリクスです -// -// - この条件部は型引数が関数であるかを確認し、 -// もし関数であれば関数の返り値を元に -// Rという新しい型を作成します -// -// - 条件を通過した場合は型の値は推論された返り値に、 -// そうでなければ元の型になります -// - -type getIDReturn = GetReturnValue; - -// 以下は関数であるというチェックを満たさないので、 -// 与えられた型をそのまま返します。 -type getCat = GetReturnValue; diff --git a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Discriminate Types.ts b/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Discriminate Types.ts deleted file mode 100644 index be2c8178a57a..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Discriminate Types.ts +++ /dev/null @@ -1,66 +0,0 @@ -// 共用型の識別とは -// コードフロー解析で可能性のあるオブジェクトの種類を -// 特定の1つのオブジェクトに減らすのに使うものです。 -// -// このパターンは異なる文字列や数字の定数を持つ -// よく似たオブジェクトの集合に対してよく機能します。 -// 例: 名前付きイベントのリストや -// バージョン付けされたオブジェクトの集合 - -type TimingEvent = { name: "start"; userStarted: boolean } | { name: "closed"; duration: number }; - -// イベントがこの関数にやってきたとき、 -// 2つの型のどちらの可能性もあります。 - -const handleEvent = (event: TimingEvent) => { - // event.nameに対してswitch文を用いることで、 - // TypeScriptのコードフロー解析はオブジェクトが - // 共用型のうちの片方で表せるということを確定できます。 - - switch (event.name) { - case "start": - // TimingEventのうち、nameが"start"になる型は1つしかないので、 - // これはuserStartedに - // 安全にアクセスできることを意味します。 - const initiatedByUser = event.userStarted; - break; - - case "closed": - const timespan = event.duration; - break; - } -}; - -// このパターンは型の識別にnumber型を使った -// 場合でも同じです。 - -// 以下の例では、区別できる共用型に加えて -// ハンドリングする必要のあるエラーがあります。 - -type APIResponses = { version: 0; msg: string } | { version: 1; message: string; status: number } | { error: string }; - -const handleResponse = (response: APIResponses) => { - // エラーの場合をハンドリングし、returnします。 - if ("error" in response) { - console.error(response.error); - return; - } - - // TypeScriptはここではAPIResponseがエラー型にならないことを知っています。 - // もし、エラーであればこの関数はreturnされています。 - // これは、以下のresponseに - // マウスホバーすると確認できます。 - - if (response.version === 0) { - console.log(response.msg); - } else if (response.version === 1) { - console.log(response.status, response.message); - } -}; - -// 共用型のすべてをチェックしたかどうかを保証できるので、 -// if文よりもswitch文を使うほうが良いでしょう。 -// ハンドブックの中に、 -// never型を使ってこのパターンを説明した章があります: - -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#discriminated-unions diff --git a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Indexed Types.ts b/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Indexed Types.ts deleted file mode 100644 index 3145d5f1f3cd..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Indexed Types.ts +++ /dev/null @@ -1,37 +0,0 @@ -// 重複した型に気付く場合があります。 -// よくある例は自動生成されたAPIレスポンスの -// ネストされたリソースです。 - -interface ArtworkSearchResponse { - artists: { - name: string; - artworks: { - name: string; - deathdate: string | null; - bio: string; - }[]; - }[]; -} - -// もし、このinterfaceが手動で作られていたら、 -// 以下のようにartworksからinterfaceを抜き出してくることはとても簡単です。 - -interface Artwork { - name: string; - deathdate: string | null; - bio: string; -} - -// しかし、この場合、APIをいじることはできません。 -// そして、もし手動でinterface作った場合に、レスポンスが変わると -// ArtworkSearchResponseのartworksと、 -// Artworkの型が不整合を起こす可能性があります。 - -// これに対する修正方法は、indexed typeです。 -// indexed typeは、JavaScriptの文字列を使ったプロパティへのアクセス方法を模倣しています。 - -type InferredArtwork = ArtworkSearchResponse["artists"][0]["artworks"][0]; - -// InferredArtworkは -// 型のプロパティを参照して作成され、 -// 指し示した部分集合に対して新しい名前を与えます。 diff --git a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Mapped Types.ts b/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Mapped Types.ts deleted file mode 100644 index 356c827fa624..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Meta-Types/Mapped Types.ts +++ /dev/null @@ -1,57 +0,0 @@ -// mapped typeは他の型を元に新しい型を作る方法であり、 -// 効率的に変換できる型です。 - -// mapped typeのよくある使い方は -// 既存の型の部分集合を扱うことです。 -// 例えば、APIが以下のArtistを返すとします: - -interface Artist { - id: number; - name: string; - bio: string; -} - -// もし、Artistの一部の変更するAPIを通して -// 更新を送信したいとき、 -// 一般的には新たに以下の型を作成する必要があるでしょう: - -interface ArtistForEdit { - id: number; - name?: string; - bio?: string; -} - -// この型が上記のArtist型と同期されなくなってしまう -// 可能性は非常に高いでしょう。 -// mapped typeは既存の型を変換した型を作成できます。 - -type MyPartialType = { - // Typeに含まれるすべてのプロパティを - // ?:な値に変換します - [Property in keyof Type]?: Type[Property]; -}; - -// すると、新しくinterfaceを編集した型を作成する代わりに、 -// mapped typeを使用できます。 -type MappedArtistForEdit = MyPartialType; - -// これでほとんど完璧ですが、 -// これは、本来発生しない、idがnullになるパターンを許容してしまいます。 -// 交差型を使って、ちょっと改善してみましょう。 -// (詳しくは example:union-and-intersection-types を参照) - -type MyPartialTypeForEdit = { - [Property in keyof Type]?: Type[Property]; -} & { id: number }; - -// 上記はmapped typeの結果を使って、 -// これとidが数値の集合を持つオブジェクトとマージします。 -// すると、型の中にidが存在していることを強制する型が効率的にできます。 - -type CorrectMappedArtistForEdit = MyPartialTypeForEdit; - -// 以上はmapped typeがどのように動作するかのとても簡単な例でしたが、 -// 基礎的な動作のほとんどをカバーしています。 -// もし、さらに深く知りたい場合は、handbookを参照ください: -// -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Any.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Any.ts deleted file mode 100644 index 0c712d234138..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Any.ts +++ /dev/null @@ -1,50 +0,0 @@ -// anyはTypeScriptのエスケープ句です。 -// any型を利用することで、一区切りのコードを -// JavaScriptの様に動的に扱ったり、 -// 型システムの制限を回避することができます。 - -// any型が使用されている良い例はJSON.parseの結果です - -const myObject = JSON.parse("{}"); - -// TypeScriptにおけるany宣言は、あなたがその値について詳しく知っていて -// それが厳密に正しくないとしても、安全なものなので信じてくださいという宣言です。 -// 例えば、次のコードはクラッシュします。 - -myObject.x.y.z; - -// any型を利用することで、型の安全性と引き換えに、 -// よりオリジナルに近いJavaScriptコードを書くことができます。 - -// any型は、(neverを除いて)どんな型でも割り当て可能であり、 -// 一方の型をもう一方に割り当て可能にする「型のワイルドカード」 -// によく似ています。 - -declare function debug(value: any): void; - -debug("a string"); -debug(23); -debug({ color: "blue" }); - -// いずれのdebug関数実行も、引数の型を -// anyに置き換えることができるため許可されます。 - -// TypeScriptはany型の位置を考慮します。 -// たとえば、この様なタプル型を利用した関数引数であってもです。 - -declare function swap(x: [number, string]): [string, number]; - -declare const pair: [any, any]; -swap(pair); - -// swap関数引数であるnumber型・string型のペアは、 -// any型のペアと置き換えることができるため、 -// この関数実行は許可されます。 - -// タプル型が初見の場合、example:tuples を参照してください。 - -// unknown型はany型の兄弟とも言うことができますが、 -// any型は「最善策を知っている」場合に利用する一方で、 -// unknown型は「最善策が分からないので、TSに型を伝える必要がある」 -// 場合に利用します。 -// 詳細は example:unknown-and-never を参照してください。 diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts deleted file mode 100644 index 8afea11a7636..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts +++ /dev/null @@ -1,65 +0,0 @@ -// TypeScriptには、ソースコードにリテラルを用いた -// とても面白い利用例があります。 - -// これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。 -// ( example:type-widening-and-narrowing ) -// そして、はじめにそれを網羅する価値があります。 - -// リテラルは集合型よりも具体的なサブタイプです。 -// どういうことかと言うと、型システム内部では -// 「Hello World」は文字列ですが、文字列は「Hello World」ではありません。 - -const helloWorld = "Hello World"; -let hiWorld = "Hi World"; // これはletなので文字列型です - -// この関数は、すべての文字列を受け入れます -declare function allowsAnyString(arg: string); -allowsAnyString(helloWorld); -allowsAnyString(hiWorld); - -// この関数は、文字列リテラル「Hello World」のみを受け入れます -declare function allowsOnlyHello(arg: "Hello World"); -allowsOnlyHello(helloWorld); -allowsOnlyHello(hiWorld); - -// これにより、共用体型を使用して特定のリテラルのみを受け入れる -// APIを宣言することができます - -declare function allowsFirstFiveNumbers(arg: 1 | 2 | 3 | 4 | 5); -allowsFirstFiveNumbers(1); -allowsFirstFiveNumbers(10); - -let potentiallyAnyNumber = 3; -allowsFirstFiveNumbers(potentiallyAnyNumber); - -// しかし、このルールは混み入ったオブジェクトには適用されません。 - -const myUser = { - name: "Sabrina", -}; - -// 定数として定義された `name:"Sabrina"` であっても -// `name:string` に変換されてしまいます。 -// こうなるのは、nameプロパティがいつでも変更できるからです。 - -myUser.name = "Cynthia"; - -// なぜならmyUserのnameプロパティは変更できるため、 -// TypeScriptは型システムにおいてリテラル型を使用できません。 -// しかしながら、次の機能でこれを許容することができます。 - -const myUnchangingUser = { - name: "Fatma", -} as const; - -// 「as const」をオブジェクトに適用すると、 -// 変更できるオブジェクトの代わりに、 -// 変更できないオブジェクトになります。 - -myUnchangingUser.name = "Raîssa"; - -// 「as const」はコード中でインラインリテラルを扱ったり、 -// 固定データを扱うための素晴らしいツールです。 -// 「as const」は配列でも動作します。 - -const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Union and Intersection Types.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Union and Intersection Types.ts deleted file mode 100644 index b0727b7c7d30..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Union and Intersection Types.ts +++ /dev/null @@ -1,82 +0,0 @@ -// 型共用体は、いくつかの型である可能性がある -// オブジェクトを宣言する一つの方法です。 - -type StringOrNumber = string | number; -type ProcessStates = "open" | "closed"; -type OddNumbersUnderTen = 1 | 3 | 5 | 7 | 9; -type AMessyUnion = "hello" | 156 | { error: true }; - -// string型ではなく、"open"や"closed"の利用が初めてであれば、 -// example:literals を参照してください。 - -// 共用体の中に、異なる型を混ぜあわせることができます。 -// そしてある値は、それらの型のうちの1つであるということを表せます。 - -// そしてTypeScriptは、値が実行時にどうなり得るのか、 -// 決定する余地を残してくれます。 - -// 共用体は、型の拡張によって損なわれることがあります。 -// 例: - -type WindowStates = "open" | "closed" | "minimized" | string; - -// これにカーソルを合わせると、WindowStatesが -// 共用体ではなくstring型になっている様子を確認できます。 -// これについて example:type-widening-and-narrowing で解説しています。 - -// 共用体がOR条件であるならば、交差はAND条件です。 -// 交差型は、2つ以上の型が交差することで作成される、新しい型です。 -// これにより型の合成が可能になります。 - -interface ErrorHandling { - success: boolean; - error?: { message: string }; -} - -interface ArtworksData { - artworks: { title: string }[]; -} - -interface ArtistsData { - artists: { name: string }[]; -} - -// これらのインターフェースは、同じエラー処理結果とそれぞれのデータ、 -// 両方を持ち合わせた型合成をすることができます。 - -type ArtworksResponse = ArtworksData & ErrorHandling; -type ArtistsResponse = ArtistsData & ErrorHandling; - -// 例: - -const handleArtistsResponse = (response: ArtistsResponse) => { - if (response.error) { - console.error(response.error.message); - return; - } - - console.log(response.artists); -}; - -// 交差型と共用体型の組み合わせは、 -// オブジェクトに2つの値のうちいずれかを含める必要がある -// といった場合に、とても役立ちます。 - -interface CreateArtistBioBase { - artistID: string; - thirdParty?: boolean; -} - -type CreateArtistBioRequest = (CreateArtistBioBase & { html: string }) | { markdown: string }; - -// これにより、artistIDと、htmlまたはmarkdownを含んでいる -// リクエストのみを作成することができます。 - -const workingRequest: CreateArtistBioRequest = { - artistID: "banksy", - markdown: "Banksy is an anonymous England-based graffiti artist...", -}; - -const badRequest: CreateArtistBioRequest = { - artistID: "banksy", -}; diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Unknown and Never.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Unknown and Never.ts deleted file mode 100644 index 1e22eb4f3d75..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Unknown and Never.ts +++ /dev/null @@ -1,128 +0,0 @@ -// unknown型 - -// unknown型は、一度詳しくなると、非常に多くの用途があることに気が付く型の一つです。 -// unknown型は、any型とよく似た振る舞いをします。 -// anyは曖昧なままでも使用できますが、 unknownは -// 型を特定する必要がある点が異なります。 - -// JSONパーサーのWrapperは良い例です。 -// JSONのデータは、多種多様であるため、JSONパーサーの利用者が -// データの形を知っているにもかかわらず、JSONパーサーの作者は、 -// データがどのような形になっているのかを知ることはできません。 - -const jsonParser = (jsonString: string) => JSON.parse(jsonString); - -const myAccount = jsonParser(`{ "name": "Dorothea" }`); - -myAccount.name; -myAccount.email; - -// 変数jsonParserにカーソルを合わせると、戻り値の型がany型であることがわかります。 -// そして、変数myAccountも同様にany型になります。 -// これについて、ジェネリクスを使って型付けすることもできますが、 -// unknown型を使うことによっても型付けできます。 - -const jsonParserUnknown = (jsonString: string): unknown => JSON.parse(jsonString); - -const myOtherAccount = jsonParserUnknown(`{ "name": "Samuel" }`); - -myOtherAccount.name; - -// myOtherAccountの型をTypeScriptに示すまでは、myOtherAccountのオブジェクトを使用する -// ことができません。こうすることによって、APIの使用者に、型について前もって -// 考えさせることができます。 - -type User = { name: string }; -const myUserAccount = jsonParserUnknown(`{ "name": "Samuel" }`) as User; -myUserAccount.name; - -// unknown型はとても優れたツールです。より深く理解したい場合はこれらを参照してください。 -// https://mariusschulz.com/blog/the-unknown-type-in-typescript -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type - -// never型 - -// TypeScriptは、データフローの解析をサポートしているため、 -// 論理的に絶対に発生しないコードを表現できる必要があります。 -// 例えば、こちらの関数は絶対にreturnされません。 - -const neverReturns = () => { - // 1行目で例外を投げる場合 - throw new Error("必ず例外が投げられるので、戻り値は返りません"); -}; - -// この関数にカーソルを合わせると、型が () => neverとなっていることがわかります。 -// つまり、この関数は絶対にreturnされません。 -// これらは、他の値と同様に、代入することは可能です。 - -const myValue = neverReturns(); - -// never型を返す関数は、 -// JavaScriptランタイムの予想できない挙動に対応する場合や、 -// APIの利用者が型を使わない可能性がある場合に有用です。 - -const validateUser = (user: User) => { - if (user) { - return user.name !== "NaN"; - } - // 型システム的には、このコードは絶対に実行されません。 - // つまり、関数neverReturnsの戻り値の型に合致します。 - - return neverReturns(); -}; - -// この関数の型定義では、引数userが必ず渡されることになっていますが、 -// JavaScriptには様々な抜け道があるので、 -// それを保証することはできません。 - -// 上記の例のようにnever型を返す関数を使うことで、実行される可能性がない箇所に -// コードを追加することができます。 -// これは、より良いエラーメッセージを表示したい場合や、ファイルや -// ループなどのリソースをクローズしたい場合などで有用です。 - -// とてもよくあるnever型の使われ方として、 -// switch文でのすべてのパスが網羅されていることの担保があります。 - -// 以下は、enumと、neverによってすべてのパスが網羅されているswith文の例です。 -// 試しにFlowerに新しいオプションを追加してみてください(例: Tulipなど) - -enum Flower { - Rose, - Rhododendron, - Violet, - Daisy, -} - -const flowerLatinName = (flower: Flower) => { - switch (flower) { - case Flower.Rose: - return "Rosa rubiginosa"; - case Flower.Rhododendron: - return "Rhododendron ferrugineum"; - case Flower.Violet: - return "Viola reichenbachiana"; - case Flower.Daisy: - return "Bellis perennis"; - - default: - const _exhaustiveCheck: never = flower; - return _exhaustiveCheck; - } -}; - -// 新しく追加したオプションの型は、never型に変換できない -// というエラーが表示されるはずです。 - -// 共用体でのnever型 - -// 共用体では、never型は -// 自動的に取り除かれます。 - -type NeverIsRemoved = string | never | number; - -// NeverIsRemovedの型を見てみると、 -// string | number になっています。 -// これは、never型の代入は実行時には絶対に起こらないためです。 - -// この特徴は、Conditinal Typesで良く使われています。 example:conditional-types - diff --git a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Built-in Utility Types.ts b/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Built-in Utility Types.ts deleted file mode 100644 index e2bf7b1f3f0c..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Built-in Utility Types.ts +++ /dev/null @@ -1,121 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -// ある型がほとんどのコードベースで有効性があると感じられた場合、 -// その型はTypeScriptに追加され、他の誰もが使えるようになります。 -// TypeScriptに追加されたら、いつでもその型が使えることが -// 保証されます。 - -// Partial - -// オブジェクト型を型引数として受け取り、そのプロパティを -// すべて任意プロパティへと変換します。 - -interface Sticker { - id: number; - name: string; - createdAt: string; - updatedAt: string; - submitter: undefined | string; -} - -type StickerUpdateParam = Partial; - -// Readonly - -// オブジェクト型を型引数として受け取り、そのプロパティを読み取り専用にします。 - -type StickerFromAPI = Readonly; - -// Record - -// KeysFromからプロパティの一覧を受け取り、 -// 各プロパティの値をType型にした型を作成します。 - -// 型キーの一覧: -type NavigationPages = "home" | "stickers" | "about" | "contact"; - -// 上記キーに対応するデータの型: -interface PageInfo { - title: string; - url: string; - axTitle?: string; -} - -const navigationInfo: Record = { - home: { title: "Home", url: "/" }, - about: { title: "About", url: "/about" }, - contact: { title: "Contact", url: "/contact" }, - stickers: { title: "Stickers", url: "/stickers/all" }, -}; - -// Pick - -// 型の第一引数に受け取ったオブジェクトから、第二引数に任意のプロパティ名を定義して -// そのプロパティと対応する値の型を持つ型を作成します。 -// 型のホワイトリストのようなものです。 - -type StickerSortPreview = Pick; - -// Omit - -// 型の第一引数に受け取ったオブジェクトから、第二引数に任意のプロパティ名を定義して -// そのプロパティを除外した型を作成します。 -// 型のブラックリストのようなものです。 - -type StickerTimeMetadata = Omit; - -// Exclude - -// 型の第一引数に受け取った共用体型から、第二引数に受け取った共用体型を -// 除外した型を作成します。 - -type HomeNavigationPages = Exclude; - -// Extract - -// 型の第一引数に受け取った共用体型から、第二引数に受け取った共用体型に -// 当てはまる型を作成します。 - -type DynamicPages = Extract; - -// NonNullable - -// 型引数に受け取った共用体型から、nullとundefinedを除外した型を返します。 -// 値のバリデーションに使えるでしょう。 - -type StickerLookupResult = Sticker | undefined | null; -type ValidatedResult = NonNullable; - -// ReturnType - -// 型引数に受け取った関数型から、その返り値の型を作成します。 - -declare function getStickerByID(id: number): Promise; -type StickerResponse = ReturnType; - -// InstanceType - -// クラスインスタンス、またはコンストラクタ関数を持つオブジェクトから、 -// そのインスタンスの型を作成します。 - -class StickerCollection { - stickers: Sticker[]; -} - -type CollectionItem = InstanceType; - -// Required - -// 型引数に受け取ったオブジェクト型からオプショナルのプロパティをすべて -// 必須に変換した型を作成します。 - -type AccessiblePageInfo = Required; - -// ThisType - -// 他の型とは違い、ThisTypeは新しい型を返しません。 -// 関数で使われるthisの型を型引数に受け取った型に変換します。 -// ThisTypeはTSConfigのnoImplicitThisがtrue -// の場合にしか使えません。 - -// https://www.typescriptlang.org/docs/handbook/utility-types.html diff --git a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Nullable Types.ts b/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Nullable Types.ts deleted file mode 100644 index 1874ae09d1d8..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Nullable Types.ts +++ /dev/null @@ -1,85 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: false } } - -// JavaScriptでは、存在しない値を宣言する方法が2つあります。 -// TypeScriptでは、optionalやnullableな値を宣言する -// 方法をさらにいくつか提供します。 - -// 最初に、JavaScriptの基本型である -// undefinedとnullの違いを見てみましょう。 - -// Undefinedは値が見つからないときあるいは設定できない場合です。 - -const emptyObj = {}; -const anUndefinedProperty: undefined = emptyObj["anything"]; - -// Nullは値が意図的に欠如していることを -// 意味します。 - -const searchResults = { - video: { name: "LEGO Movie" }, - text: null, - audio: { name: "LEGO Movie Soundtrack" }, -}; - -// なぜundefinedを使わないのでしょう? -// 主な理由としては、textが正しく含まれていることを確認できるからです。 -// もしtextがundefinedの場合、 -// 結果はtextが存在しないときと同じものになります。 - -// これは、少し表面的に感じるかもしれません。 -// しかし、JSON文字列に変換したときに、 -// textがundefinedの場合、textは変換された文字列に含まれません。 - -// Strict Null Types - -// TypeScript 2.0より前では、undefinedとnullは事実上、型システムから無視されていました。 -// これによって、TypeScriptのコーディング環境は -// 型のないJavaScriptに近づいてしまっていました。 - -// バージョン2.0にて、"strictNullChecks"というコンパイラフラグが追加されました。 -// このフラグをオンにすると、undefinedとnullが -// コードフロー分析を通して対応すべき型として扱われるようになります。 -// (より詳細には example:code-flow を参照ください) - -// TypeScriptでstrict null checksを有効にしたときの違いの例として -// 以下の"Potential String"型をホバーしてみてください: - -type PotentialString = string | undefined | null; - -// PotentialString型ではundefinedとnullが切り捨てられています。 -// もし、設定に行きstrictモードを有効にして戻ってくると、 -// PotentialString型がすべての型の交差型になっていることが -// 確認できます。 - -declare function getID(): PotentialString; - -const userID = getID(); -console.log("User Logged in: ", userID.toUpperCase()); - -// strictモードでは、上記はエラーになります。 - -// 型アサーションや非nullアサーション演算子(!)を使うなど -// TypeScriptに詳細を教える方法はいくつかあります。 - -const definitelyString1 = getID() as string; -const definitelyString2 = getID()!; - -// あるいはifを用いて存在を安全に確認することもできます: - -if (userID) { - console.log(userID); -} - -// Optional Properties - -// Void - -// voidは値を返さない関数の -// 戻り値型です。 - -const voidFunction = () => {}; -const resultOfVoidFunction = voidFunction(); - -// 実行時にはundefinedであっても、 -// TypeScriptはコンパイルエラーを発生させるために -// void型を保持します。 diff --git a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Tuples.ts b/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Tuples.ts deleted file mode 100644 index 92f13b97f160..000000000000 --- a/packages/playground-examples/copy/ja/TypeScript/Type Primitives/Tuples.ts +++ /dev/null @@ -1,74 +0,0 @@ -// 一般的に、配列は0から任意の数の -// 単一の型のオブジェクトを含みます。 -// TypeScriptは複数の型を含み、 -// 格納順が重要な配列について特別な解析を行います。 - -// これらはタプルと呼ばれます。これらはキーを持つオブジェクトよりも短い文法で、 -// いくつかのデータをつなげるための方法と考えられます。 - -// タプルはJavaScriptの配列の文法で作成できます: - -const failingResponse = ["Not Found", 404]; - -// ただし、タプルとして型を宣言する必要があります。 - -const passingResponse: [string, number] = ["{}", 200]; - -// もし、ホバーすれば2つの変数が配列( (string | number)[] )と -// タプル( [string, number] )として解釈されているという -// 違いを確認できるでしょう。 - -// 配列の場合、どのインデックスの要素も文字列または数値の -// どちらかになるので順番は重要ではありません。 -// タプルでは、順番と長さは保証されています。 - -if (passingResponse[1] === 200) { - const localInfo = JSON.parse(passingResponse[0]); - console.log(localInfo); -} - -// これは、TypeScriptが正しいインデックスに対して正しい型を提供するだけでなく、 -// もしオブジェクトの宣言していないインデックスに -// アクセスしようとすればエラーを発生させることを意味します。 - -passingResponse[2]; - -// タプルは接続されたデータの短いまとまりやフィクスチャにとって、 -// 良いパターンとして感じられるでしょう。 - -type StaffAccount = [number, string, string, string?]; - -const staff: StaffAccount[] = [ - [0, "Adankwo", "adankwo.e@"], - [1, "Kanokwan", "kanokwan.s@"], - [2, "Aneurin", "aneurin.s@", "Supervisor"], -]; - -// 最初がタプルで、その後の長さが分からない型を扱う場合、 -// スプレッド構文を使うと任意の長さを持ち、 -// 追加のインデックスの要素が -// 特定の型であると示すことができます。 - -type PayStubs = [StaffAccount, ...number[]]; - -const payStubs: PayStubs[] = [ - [staff[0], 250], - [staff[1], 250, 260], - [staff[0], 300, 300, 300], -]; - -const monthOnePayments = payStubs[0][1] + payStubs[1][1] + payStubs[2][1]; -const monthTwoPayments = payStubs[1][2] + payStubs[2][2]; -const monthThreePayments = payStubs[2][2]; - -// 以下のようにタプルを用いて任意の数の数値型を -// 引数として受け取る関数を宣言できます: - -declare function calculatePayForEmployee(id: number, ...args: [...number[]]): number; - -calculatePayForEmployee(staff[0][0], payStubs[0][1]); -calculatePayForEmployee(staff[1][0], payStubs[1][1], payStubs[1][2]); - -// -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#tuples-in-rest-parameters-and-spread-expressions -// https://auth0.com/blog/typescript-3-exploring-tuples-the-unknown-type/ diff --git a/packages/playground-examples/copy/ja/sections.json b/packages/playground-examples/copy/ja/sections.json deleted file mode 100644 index 74bbe39f38cd..000000000000 --- a/packages/playground-examples/copy/ja/sections.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "sections": [ - { - "name": "JavaScript", - "id": "JavaScript", - "subtitle": "TypeScriptで最小限のシンタックスを追加することで、日々のJavaScriptの開発がでいかに改善できるかについて学びましょう。" - }, - { - "name": "TypeScript", - "id": "TypeScript", - "subtitle": "TypeScriptがJavaScriptをどのように拡張し、より安全で便利にしているかについて学びましょう。" - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "リリースノートを確認する。" - }, - { - "name": "3.8", - "id": "3.8", - "subtitle": "リリースノートを確認する。" - }, - { - "name": "プレイグラウンド V3", - "id": "Playground", - "subtitle": "プレイグラウンドにどのような変更があったかを学びましょう。" - } - ], - "sortedSubSections": [ - // JS - "JavaScriptの基礎", - "JavaScriptにおける関数", - "JavaScriptにおけるクラス", - "モダンなJavaScript", - "外部APIとの連携", - "JavaScriptのヘルプ機能", - // TS - "基本的な型", - "一般的な型", - "型を作成する型", - "言語について", - "言語拡張", - // Examples - "新しいシンタックスやエラーメッセージ", - "型やコードフローについて", - "自動修正", - // Playground - "コンフィグ", - "周辺ツール", - // 3.8 - "Breaking Changes", - "JSDoc 改善" - ] -} \ No newline at end of file diff --git a/packages/playground-examples/copy/ko/3-7/Fixits/Big number literals.ts b/packages/playground-examples/copy/ko/3-7/Fixits/Big number literals.ts deleted file mode 100644 index e3b800a1e415..000000000000 --- a/packages/playground-examples/copy/ko/3-7/Fixits/Big number literals.ts +++ /dev/null @@ -1,38 +0,0 @@ -//// { compiler: { target: 99 }, order: 1 } - -// JavaScript에서 표현할 수 있는 숫자의 크기에 -// 제한이 있다는 걸 알고 계셨나요? - -const maxHighValue = 9007199254740991; -const maxLowValue = -9007199254740991; - -// 아래 숫자보다 수가 하나라도 더 크거나 작으면 -// 매우 위험해집니다 - -const oneOverMax = 9007199254740992; -const oneBelowMin = -9007199254740992; - -// 이 크기의 수치를 다루는 방법은 -// numbers 대신 BigInts로 -// 변환하는 것입니다: -// -// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt - -// TypeScript는 이제 JavaScript에 타입이 -// BigInt 여야 한다는 것을 알리는 접미사 "n"을 추가하여 -// 2^52(양수/음수) 이상의 숫자 리터럴에 대한 -// 기능을 제공합니다. - -// 숫자 리터럴 -9007199254740993; --9007199254740993; -9007199254740994; --9007199254740994; - -// 16진수 -0x19999999999999; --0x19999999999999; -0x20000000000000; --0x20000000000000; -0x20000000000001; --0x20000000000001; diff --git a/packages/playground-examples/copy/ko/3-7/Fixits/Const to let.ts b/packages/playground-examples/copy/ko/3-7/Fixits/Const to let.ts deleted file mode 100644 index 3d180c234b03..000000000000 --- a/packages/playground-examples/copy/ko/3-7/Fixits/Const to let.ts +++ /dev/null @@ -1,12 +0,0 @@ -//// { compiler: { }, order: 1 } - -// 3.7 버전의 새로운 기능은 -// 값이 재할당 되었을 때 const 변수를 let으로 -// 빠르게 변환하는 것입니다. - -// 아래 오류에 하이라이트 표시를 확인하고 -// 퀵 픽스를 실행해보세요. - -const displayName = "Andrew"; - -displayName = "Andrea"; diff --git a/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Nullish Coalescing.ts b/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Nullish Coalescing.ts deleted file mode 100644 index 088085a5b912..000000000000 --- a/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Nullish Coalescing.ts +++ /dev/null @@ -1,43 +0,0 @@ -//// { compiler: { }, order: 2 } - -// nullish coalescing 연산자는 || 연산자의 대안입니다. -// 왼쪽의 결과가 null 또는 undefined일 경우, -// 오른쪽의 결과를 반환합니다. - -// 그에 반해, ||는 falsy 검사를 사용하므로 -// 빈 문자열 또는 숫자 0은 false로 여깁니다. - -// 이 기능의 좋은 예시는 key가 전달되지 않았을 때 -// 기본값을 갖는 일부분의 오브젝트를 다루는 것입니다. - -interface AppConfiguration { - // 기본값: "(no name)"; 빈 문자열은 유효 - name: string; - - // 기본값: -1; 0은 유효 - items: number; - - // 기본값: true - active: boolean; -} - -function updateApp(config: Partial) { - // null-coalescing 연산자로 설정 - config.name = config.name ?? "(no name)"; - config.items = config.items ?? -1; - config.active = config.active ?? true; - - // 현재 솔루션 - config.name = typeof config.name === "string" ? config.name : "(no name)"; - config.items = typeof config.items === "number" ? config.items : -1; - config.active = typeof config.active === "boolean" ? config.active : true; - - // 잘못된 데이터를 설정할 수 있는 || 연산자 사용 - config.name = config.name || "(no name)"; // "" 입력을 허용하지 않음 - config.items = config.items || -1; // 0 입력을 허용하지 않음 - config.active = config.active || true; // 아주 잘못된 사례, 항상 true -} - -// 여러분은 3.7 버전에 대한 블로그 글에서 nullish coalescing에 대해 더 많은 것을 읽어보실 수 있습니다: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ \ No newline at end of file diff --git a/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Optional Chaining.ts b/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Optional Chaining.ts deleted file mode 100644 index 6bfd43a216a6..000000000000 --- a/packages/playground-examples/copy/ko/3-7/Syntax and Messaging/Optional Chaining.ts +++ /dev/null @@ -1,70 +0,0 @@ -//// { compiler: { }, order: 1 } - -// 선택적 체이닝(Optional chaining)이 -// TC39 3단계에서 합의점에 도달한 내용이 TS 3.7 입니다. -// 선택적 체이닝을 사용하면 null 또는 undefined인 코드에 도달했을 때 -// 즉시 중지할 수 있는 코드를 작성할 수 있습니다. - -// 프로퍼티 접근 (Property Access) - -// 우리가 아티스트와 아티스트 약력이 없는 -// 앨범을 가지고 있다고 가정해 보겠습니다. -// 예를 들면, 컴필레이션 앨범에는 아티스트 정보가 없습니다. - -type AlbumAPIResponse = { - title: string; - artist?: { - name: string; - bio?: string; - previousAlbums?: string[]; - }; -}; - -declare const album: AlbumAPIResponse; - -// 선택적 체이닝을 사용하면 -// 다음과 같은 코드를 작성할 수 있습니다: - -const artistBio = album?.artist?.bio; - -// 대신에: - -const maybeArtistBio = album.artist && album.artist.bio; - -// 이 경우 ?.는 &&과는 다르게 동작합니다. -// 왜냐하면 &&는 "falsy" 값에 대한 동작이 다르기 때문입니다. -// (예. 빈 문자열, 0, NaN, 그리고, false) - -// 선택적 체이닝은 null이거나 undefined이면 -// 동작을 멈추고, undefined를 반환합니다. - -// 선택적 요소 접근 (Optional Element Access) - -// 프로퍼티 접근은 .연산자만을 이용하고, -// 선택적 체이닝이 요소에 접근할 때는 []연산자와 함께 이용합니다. - -const maybeArtistBioElement = album?.["artist"]?.["bio"]; - -const maybeFirstPreviousAlbum = album?.artist?.previousAlbums?.[0]; - -// 선택적 호출(Optional Calls) - -// 런타임 시 존재 여부를 판단하는 함수를 다룰 때, -// 선택적 체이닝은 실제로 존재하는 경우에만 함수호출을 지원합니다. -// 이는 if (func) func()와 같은 -// 기존에 사용하던 코드를 대체할 수 있습니다. - -// 예를 들어 API 요청에 의한 콜백 함수의 선택적 호출은 -// 다음과 같습니다: - -const callUpdateMetadata = (metadata: any) => Promise.resolve(metadata); // 가짜 API 호출 - -const updateAlbumMetadata = async (metadata: any, callback?: () => void) => { - await callUpdateMetadata(metadata); - - callback?.(); -}; - -// 선택적 체이닝에 대한 자세한 내용은 3.7 블로그 게시물을 통해 확인할 수 있습니다: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/ko/3-7/Types and Code Flow/Uncalled Function Checks.ts b/packages/playground-examples/copy/ko/3-7/Types and Code Flow/Uncalled Function Checks.ts deleted file mode 100644 index 11a3728e49f4..000000000000 --- a/packages/playground-examples/copy/ko/3-7/Types and Code Flow/Uncalled Function Checks.ts +++ /dev/null @@ -1,41 +0,0 @@ -//// { compiler: { }, order: 1 } - -// 3.7버전에서 새로운 점은 -// 여러분이 함수의 반환 값 대신 실수로 함수를 사용할 때, -// if문 내부를 검사하는 것입니다. - -// if문을 항상 true로 만드는 함수가 존재한다고 -// 알려질 때만 적용합니다. - -// 여기에 선택적인 콜백과 필수적인 콜백이 있는 -// plugin 인터페이스 예시가 있습니다. - -interface PluginSettings { - pluginShouldLoad?: () => void; - pluginIsActivated: () => void; -} - -declare const plugin: PluginSettings; - -// pluginShouldLoad는 존재하지 않으니 -// 타당한 검사입니다. - -if (plugin.pluginShouldLoad) { - // pluginShouldLoad가 존재할 때 이곳에 당신이 원하는 것을 하세요. -} - -// 3.6버전과 아래의 경우, 에러가 아닙니다. - -if (plugin.pluginIsActivated) { - // plugin이 활성화 될때 - // 무언가를 하고 싶지만, - // 메서드 호출하는 대신에 속성으로 사용했습니다. -} - -// pluginIsActivated는 항상 존재해야 하지만, -// if문 블록 안에서 메서드를 호출했으므로 -// TypeScript는 여전히 검사를 허용합니다. - -if (plugin.pluginIsActivated) { - plugin.pluginIsActivated(); -} diff --git a/packages/playground-examples/copy/ko/3-8/JSDoc Improvements/Accessibility Modifiers.js b/packages/playground-examples/copy/ko/3-8/JSDoc Improvements/Accessibility Modifiers.js deleted file mode 100644 index f580ad4f34c8..000000000000 --- a/packages/playground-examples/copy/ko/3-8/JSDoc Improvements/Accessibility Modifiers.js +++ /dev/null @@ -1,78 +0,0 @@ -//// { compiler: { ts: "3.8.3" }, isJavaScript: true } -// @ts-check - -// TypeScript에 대한 JSDoc 지원은 -// 클래스 프로퍼티에 접근 지정자를 지원하기 위해 확장했습니다: -// -// @public - 기본값이며, 1로 설정하지 않으면 발생하는 것 입니다. -// @private - 필드가 정의된 같은 클래스에서만 -// 접근할 수 있는 필드 -// @protected - 필드가 정의되고 그 클래스의 하위 클래스가 있는 -// 클래스에 접근될 수 있는 필드 -// - -// Animal의 기본 클래스입니다, private과 protected 필드를 둘 다 가지고 있습니다. -// 하위 클래스는 "this.isFast"를 접근할 수 있지만, -// "this.type"은 접근할 수 없습니다. - -// 이런 클래스의 외부에서, -// 두 필드는 보이지 않고 // @ts-check가 실행 중일 때 -// 컴파일러 에러를 반환합니다: - -class Animal { - constructor(type) { - /** @private */ - this.type = type - /** @protected */ - this.isFast = type === 'cheetah' - } - - makeNoise() { - // 아마 꽤 많이 조용할 것입니다 - if (this.type === 'bengal') { - console.log('') - } else { - throw new Error('makeNoise was called on a base class') - } - } -} - -class Cat extends Animal { - constructor(type) { - super(type || 'housecat') - } - - makeNoise() { - console.log('meow') - } - - runAway() { - if (this.isFast) { - console.log('Got away') - } else { - console.log('Did not make it') - } - } -} - -class Cheetah extends Cat { - constructor() { - super('cheetah') - } -} - -class Bengal extends Cat { - constructor() { - super('bengal') - } -} - -const housecat = new Cat() -housecat.makeNoise() - -// 이것은 사용할 수 없습니다 -housecat.type -housecat.isFast - -// 여러분은 글에서 더 많은 것을 읽을 수 있습니다 -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#jsdoc-modifiers diff --git a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Export Modules From.ts b/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Export Modules From.ts deleted file mode 100644 index bfe41adc4835..000000000000 --- a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Export Modules From.ts +++ /dev/null @@ -1,24 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// TypeScript의 다시 export 하는 기능을 통해 -// ES2018에서 이용할 수 있는 추가 사례들을 지원하는 데에 더 가까워졌습니다. - -// JavaScript export는 dependency 일부를 -// 우아하게 다시 export 할 수 있도록 합니다: - -export { ScriptTransformer } from "@jest/transform"; - -// 객체 전체를 export 하고 싶다면, -// 이전 버전의 TypeScript에서 -// 조금 더 장황해집니다: - -import * as console from "@jest/console"; -import * as reporters from "@jest/reporters"; - -export { console, reporters }; - -// TypeScript 3.8은, -// JavaScript 사양의 export 보다 더 많은 양식을 제공하여, -// 한 줄에 모듈을 다시 export 할 수 있도록 합니다. - -export * as jestConsole from "@jest/console"; -export * as jestReporters from "@jest/reporters"; diff --git a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Private Class Fields.ts b/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Private Class Fields.ts deleted file mode 100644 index baeb370460b9..000000000000 --- a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Private Class Fields.ts +++ /dev/null @@ -1,69 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// 3.8에서는 private 필드가 추가됩니다. 이는 하위 클래스(subclass)를 포함하여, -// 해당 필드를 가지고 있는 클래스 외부에서 사용할 수 없도록 하기 위한 클래스 필드 선언 방법입니다. - -// 예를 들어, 아래의 Person 클래스는 클래스의 인스턴스를 사용하는 누구에게도 -// firstName, lastName 또는 prefix를 읽는 것을 허용하지 않습니다 - -class Person { - #firstName: string; - #lastName: string; - #prefix: string; - - constructor(firstName: string, lastName: string, prefix: string) { - this.#firstName = firstName; - this.#lastName = lastName; - this.#prefix = prefix; - } - - greet() { - // 아이슬란드에서는 [prefix] [lastname] 대신 전체 이름을 사용하는 것을 선호합니다 - // https://www.w3.org/International/questions/qa-personal-names#patronymic - if (navigator.languages[0] === "is") { - console.log(`Góðan dag, ${this.#firstName} ${this.#lastName}`); - } else { - console.log(`Hello, ${this.#prefix} ${this.#lastName}`); - } - } -} - -let jeremy = new Person("Jeremy", "Bearimy", "Mr"); - -// 클래스 외부에서는 어떠한 private 필드에도 접근할 수 없습니다: - -// 예를 들어, 이것은 동작하지 않을 것입니다: -console.log(jeremy.#lastName); - -// 이것 또한: -console.log("Person's last name:", jeremy["#lastName"]); - -// 우리는 흔히 -// "왜 클래스 필드에 있는 'private' 키워드 대신 이것을 사용하려고 하나요?"라는 질문을 받습니다. -// TypeScript 3.8 이전에 어떻게 동작했었는지 비교해 봅시다: - -class Dog { - private _name: string; - constructor(name: string) { - this._name = name; - } -} - -let oby = new Dog("Oby"); -// 점 표기법으로 접근할 수 없습니다 -oby._name = "Spot"; -// 하지만 TypeScript는 예외 사항으로 대괄호 표기법을 허용합니다 -oby["_name"] = "Cherny"; - -// private의 TypeScript 참조는 타입 레벨에서만 존재하므로 -// 여러분이 여기까지만 신뢰할 수 있다는 의미입니다. -// private 필드가 곧 JavaScript 언어의 일부가 되면, -// 여러분의 코드의 가시성에 대해 더 나은 보장을 할 수 있습니다. - -// 우리는 TypeScript에서 'private' 키워드를 지원 중단할 예정이 없습니다. -// 그래서 기존 코드는 계속 동작할 것이지만, -// 대신에 이제 여러분은 JavaScript 언어에 좀 더 가까운 코드를 작성할 수 있습니다. - -// tc39 proposal에서 클래스 필드에 관하여 더 배울 수 있습니다 -// https://github.com/tc39/proposal-class-fields/ -// 그리고 베타 릴리즈 노트에서: -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#ecmascript-private-fields diff --git a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Type Imports.tsx b/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Type Imports.tsx deleted file mode 100644 index 85bbc4cca36e..000000000000 --- a/packages/playground-examples/copy/ko/3-8/Syntax and Messaging/Type Imports.tsx +++ /dev/null @@ -1,50 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// 3.8에선 타입 import를 위해 새로운 구문들을 추가했습니다. -// 이는 flow 사용자에게는 익숙할 것입니다. - -// 'import type'은 타입만 import를 선언하는 방법을 제공합니다. -// 즉, JavaScript로 변활할 때 코드가 지워질 것이라는 것을 확신할 수 있습니다. -// 코드는 항상 제거되기 때문에 -// 매우 예측 가능한 방식입니다! - -// 예를 들어, 이 줄은 import를 추가하거나 요구하지 않을 것입니다. -import type { CSSProperties } from 'react'; - -// 여기에선 타입으로 사용됩니다. -const style: CSSProperties = { - textAlign: 'center' -}; - -// 이 import와는 대조적입니다: -import * as React from 'react'; - -// 이는 JavaScript에 추가될 것입니다. -export class Welcome extends React.Component { - render() { - return ( -
-

Hello, world

-
- ) - } -} - -// 그러나, 타입이 없는 'import'에서 -// 타입만 import 할 경우, 제거될 수 있습니다. -// 컴파일된 JS 결과물에 이 import는 포함되지 않습니다. - -import { FunctionComponent } from 'react'; - -export const BetaNotice: FunctionComponent = () => { - return

This page is still in beta

-} - -// 이것을 import 생략이라 하며 혼란의 원인이 될 수 있습니다. -// 'import type' 구문을 사용하면 -// JavaScript에서 원하는 것을 구체적으로 지정할 수 있습니다. - -// 이것은 'import types'의 주요 사용 사례 중 -// 하나에 대한 작은 개요지만, -// 3.8 릴리스 노트에서 더 많은 내용을 읽을 수 있습니다. - -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#type-only-imports-exports diff --git a/packages/playground-examples/copy/ko/4-0/New Checks/Class Constructor Code Flow.ts b/packages/playground-examples/copy/ko/4-0/New Checks/Class Constructor Code Flow.ts deleted file mode 100644 index d7b09184307a..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New Checks/Class Constructor Code Flow.ts +++ /dev/null @@ -1,19 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// 4.0에서는 제어 흐름 분석을 사용하여 -// 생성자에 설정된 값을 기반으로 -// 클래스 프로퍼티의 잠재적인 타입을 추론합니다. - -class UserAccount { - id; // 타입은 string | number로 추론됩니다. - constructor(isAdmin: boolean) { - if (isAdmin) { - this.id = "admin"; - } else { - this.id = 0; - } - } -} - -// TypeScript 이전 버전에서는 -// 'id'가 'any'로 분류되었습니다. diff --git a/packages/playground-examples/copy/ko/4-0/New JS Features/JSDoc Deprecated.ts b/packages/playground-examples/copy/ko/4-0/New JS Features/JSDoc Deprecated.ts deleted file mode 100644 index 15503d1fb39f..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New JS Features/JSDoc Deprecated.ts +++ /dev/null @@ -1,19 +0,0 @@ -// 4.0에서 JSDoc 태그인 @deprecated가 타입 시스템에 추가됩니다. -// 여러분이 현재 사용할 수 있는 JSDoc에 -// 어디서든 @deprecated를 사용할 수 있습니다. - -interface AccountInfo { - name: string; - gender: string; - - /** @deprecated gender 필드를 대신 사용하세요. */ - sex: "male" | "female"; -} - -declare const userInfo: AccountInfo; -userInfo.sex; - -// 지원 중단된 프로퍼티에 접근되었을 때 -// TypeScript는 논 블로킹(non-blocking) 경고를 제공할 것이며, -// vscode가 사용하는 것처럼 편집기는 intellisense, outline 그리고 여러분의 코드에서 -// 지원 중단된 정보를 표시할 것입니다. diff --git a/packages/playground-examples/copy/ko/4-0/New JS Features/Logical Operators and Assignment.ts b/packages/playground-examples/copy/ko/4-0/New JS Features/Logical Operators and Assignment.ts deleted file mode 100644 index c80c77c2a3d9..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New JS Features/Logical Operators and Assignment.ts +++ /dev/null @@ -1,41 +0,0 @@ -// 2020년 버전의 JavaScript에서 논리 할당 연산자는 새로운 기능입니다. -// 이 연산자는 JavaScript 객체를 변경하는 -// 새로운 연산자 모음입니다. - -// 이 기능의 목표는 수학 연산자(예. += -= *=)의 개념을 재사용하지만, -// 그 대신 논리 연산자로 사용하는 것입니다. - -interface User { - id?: number - name: string - location: { - postalCode?: string - } -} - -function updateUser(user: User) { - // 이 코드는 대체 될 수 있습니다 - if (!user.id) user.id = 1 - - // 또한 이 코드를: - user.id = user.id || 1 - - // 이 코드로: - user.id ||= 1 -} - -// 연산자 모음은 중첩을 깊게 다룰 수 있어서, -// 꽤 많은 보일러플레이트 코드(boilerplate code)도 절약할 수 있습니다. - -declare const user: User -user.location.postalCode ||= "90210" - -// 새로운 연산자 3개가 있습니다: -// -// ||= 위에 나와 있습니다 -// &&= 'or' 대신에 'and'를 사용합니다 -// ??= ===를 사용하는 대신에 ||의 더 엄격한 버전을 제공하는 -// nullish-coalescing 예시를 토대로 사용합니다 - -// 제안에 대한 더 많은 정보는 다음을 참고해주세요: -// https://github.com/tc39/proposal-logical-assignment diff --git a/packages/playground-examples/copy/ko/4-0/New JS Features/Nullish Coalescing.ts b/packages/playground-examples/copy/ko/4-0/New JS Features/Nullish Coalescing.ts deleted file mode 100644 index 2498a04715d2..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New JS Features/Nullish Coalescing.ts +++ /dev/null @@ -1,40 +0,0 @@ -// # Nullish Coalescing -// -// `??`는 `||`의 일반적인 사용 방법을 보완하는 새로운 연산자입니다. -// `===`가 `==`의 사용을 더 엄격한 등호 형태로 -// 보완하는 방식과 같습니다. -// -// 연산자를 이해하기 위해 어떻게 ||가 동작하는지 봅시다: - -const response = { - nullValue: null, - headerText: "", - animationDuration: 0, - height: 400, - showSplashScreen: false, -} as const; - -const undefinedValue = response.undefinedValue || "some other default"; -// 결과는 이렇게 됩니다: 'some other default' - -const nullValue = response.nullValue || "some other default"; - -// 2개의 예시는 대부분 언어에서 비슷하게 동작합니다. -// 하나의 도구로써 || 연산자는 기본값을 설정할 때 매우 적합하지만, -// JavaScript falsy 체크는 몇 가지 일반적인 값으로 여러분을 당황하게 할 수 있습니다: - -// 의도와 다를 수 있습니다. ''은 falsy고, 결과는 다음과 같습니다: 'Hello, world!' -const headerText = response.headerText || "Hello, world!"; - -// 의도와 다를 수 있습니다. 0은 falsy고, 결과는 다음과 같습니다: 300 -const animationDuration = response.animationDuration || 300; - -// 의도와 다를 수 있습니다. false는 falsy고, 결과는 다음과 같습니다: true -const showSplashScreen = response.showSplashScreen || true; - -// 대신 ??으로 전환하여 사용한다면, -// === 등호는 양쪽을 비교하기 위해 사용됩니다: - -const emptyHeaderText = response.headerText ?? "Hello, world!"; -const zeroAnimationDuration = response.animationDuration ?? 300; -const skipSplashScreen = response.showSplashScreen ?? true; diff --git a/packages/playground-examples/copy/ko/4-0/New TS Features/Named Tuples.ts b/packages/playground-examples/copy/ko/4-0/New TS Features/Named Tuples.ts deleted file mode 100644 index 12a79546df53..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New TS Features/Named Tuples.ts +++ /dev/null @@ -1,49 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } -// 튜플은 타입 시스템에서 순서가 중요한 배열입니다, -// 여러분은 예시에서 자세히 배울 수 있습니다: 튜플 - -// TypeScript 4.0에서, 튜플의 얻게 된 기능의 타입은 -// 배열의 각각 다른 부분에 이름을 부여할 수 있습니다. - -// 예를 들어, 여러분은 Lat, Long 위치를 튜플을 통해 작성하곤 했습니다: - -type OldLocation = [number, number] - -const locations: OldLocation[] = [ - [40.7144, -74.006], - [53.6458, -1.785] -] - -// 어떤 것이 Latitude이고 Longitude인지 아는 것은 모호하므로, -// 여러분은 LatLong 튜플이라고 불러왔을 겁니다. - -// 4.0에서는, 이렇게 작성할 수 있습니다. - -type NewLocation = [lat: number, long: number] - -const newLocations: NewLocation[] = [ - [52.3702, 4.8952], - [53.3498, -6.2603] -] - -// 그 이름은 이제 에디터에서 -// 여러분이 다음 줄의 끝에 있는 0과 1 위에서 호버할 때 보입니다. -const firstLat = newLocations[0][0] -const firstLong = newLocations[0][1] - -// 조금 실망스럽게 보일 수 있지만, -// 주요 목표는 타입 시스템이 동작할 때, -// 정보를 잃어버리지 않도록 하는 것입니다. -// 예를 들어, Parameter 유틸리티 타입을 사용하는 함수에서 -// 파라미터를 추출할 경우: - -function centerMap(lng: number, lat: number) {} - -// 4.0에서, lng와 lat는 유지합니다 -type CenterMapParams = Parameters - -// 3.9에서는, 이렇게 보입니다 -type OldCenterMapParams = [number, number] - -// 파라미터 정보에 대해 -// 더 복잡한 타입 조작 손실을 만듭니다. \ No newline at end of file diff --git a/packages/playground-examples/copy/ko/4-0/New TS Features/Unknown in Catch.ts b/packages/playground-examples/copy/ko/4-0/New TS Features/Unknown in Catch.ts deleted file mode 100644 index 0f00a3cf043c..000000000000 --- a/packages/playground-examples/copy/ko/4-0/New TS Features/Unknown in Catch.ts +++ /dev/null @@ -1,36 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// JavaScript는 어떠한 값도 전달할 수 있기 때문에, -// TypeScript는 에러의 타입 선언을 지원하지 않습니다 - -try { - // .. -} catch (e) {} - -// 역사적으로, catch문의 `e`는 기본적으로 -// any 타입으로 설정되는 것을 의미합니다. -// 그래서 어떠한 프로퍼티 접근도 마음대로 접근할 수 있는 자유를 허용했었습니다. -// 4.0에서는, `any`와 `unknown` 모두 허용하기 위해 -// catch 절에서 타입 할당의 제한을 완화했습니다. - -// any 타입으로 동일한 동작 -try { - // .. -} catch (e) { - e.stack; -} - -// unknown 타입으로 명확한 동작: - -try { - // .. -} catch (e: unknown) { - // 타입 시스템이 `e`에 대해 알기 전까진 사용할 수 없습니다. - // 더 많은 정보 살펴보세요: - // 예시:unknown-and-never - e.stack; - - if (e instanceof SyntaxError) { - e.stack; - } -} diff --git a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Node.js b/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Node.js deleted file mode 100644 index b697621f714b..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Node.js +++ /dev/null @@ -1,52 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// Node.js는 Chrome V8 JavaScript 엔진을 기반으로 -// 구축된 매우 유명한 JavaScript 런타임입니다. -// 이것을 사용해 서버, 프론트엔드 클라이언트 및 그 사이 모든 것을 구축할 수 있습니다. - -// https://nodejs.org/ - -// Node.js는 JavaScript 런타임을 확장한 주요 라이브러리와 함께 제공됩니다. -// 라이브러리는 경로 처리부터: - -import { join } from "path"; -const myPath = join("~", "downloads", "todo_list.json"); - -// 파일 조작에 이르기까지 다양합니다: - -import { readFileSync } from "fs"; -const todoListText = readFileSync(myPath, "utf8"); - -// JSDoc-style 타입을 사용하면 JavaScript 프로젝트에 점진적으로 -// 타입을 추가할 수 있습니다. JSON 구조를 기반으로 -// TODO 리스트 항목을 만들어보겠습니다: - -/** - * @typedef {Object} TODO TODO 항목 - * @property {string} title TODO 항목 표기명 - * @property {string} body TODO 항목에 대한 설명 - * @property {boolean} done TODO 항목 완료 여부 - */ - -// 이제 이 값을 JSON.parse 반환 값에 할당합니다. -// 더 자세한 내용은, example:jsdoc-support를 참조하십시오. - -/** @type {TODO[]} TODO 리스트 */ -const todoList = JSON.parse(todoListText); - -// 그리고 프로세스 처리 과정은 다음과 같습니다: -import { spawnSync } from "child_process"; -todoList - .filter(todo => !todo.done) - .forEach(todo => { - // ghi 클라이언트를 사용해 아직 완료되지 않은 - // 모든 todo 리스트 항목에 대한 이슈를 생성합니다. - - // 아래와 같이 'todo.title'를 강조 표시하면 - // JS에서 자동완성 및 문서가 올바르게 표시됩니다. - spawnSync(`ghi open --message "${todo.title}\n${todo.body}"`); - }); - -// TypeScript에는 DefinitelyTyped을 통해 내장된 -// 모든 모듈에 대한 최신 타입 정의가 있습니다. -// 이는 강력한 타입 적용 범위 안에서 node 프로그램을 작성할 수 있음을 의미합니다. diff --git a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with React.tsx b/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with React.tsx deleted file mode 100644 index 12bdc1e81d51..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with React.tsx +++ /dev/null @@ -1,133 +0,0 @@ -//// { order: 2, compiler: { jsx: 2, esModuleInterop: true } } - -// React는 사용자 인터페이스를 만드는 데 널리 사용되는 라이브러리입니다. -// JSX라는 JavaScript 언어 확장을 사용하여 -// 뷰 컴포넌트를 작성하기 위해 -// JavaScript 추상화를 제공합니다. - -// TypeScript는 JSX를 지원하며, 컴포넌트 연동을 다양하게 -// 모델링 할 수 있는 다양한 타입의 도구 집합을 제공합니다. - -// TypeScript에서 React 컴포넌트가 어떻게 동작하는지 이해하기 위해서는 -// 제네릭에 대해 미리 알 필요가 있습니다: -// -// - example:generic-functions -// - example:generic-classes - -// 먼저 제네릭 인터페이스가 React 컴포넌트 매핑에서 어떻게 쓰이는지 알아보겠습니다. -// 다음은 함수형 컴포넌트 faux-React입니다: - -type FauxactFunctionComponent = - (props: Props, context?: any) => FauxactFunctionComponent | null | JSX.Element - - -// 대략: -// -// FauxactFunctionComponent는 -// Props라는 다른 타입에 의존하는 제네릭 함수입니다. -// Props는 (원시형 타입이 통과하지 못하게 하려면) 반드시 객체여야만 하며, -// Props 타입은 함수에서 첫 번째 인수로 재사용 됩니다. - -// 이를 사용하기 위해서는 다음과 같은 props 타입이 필요합니다: - -interface DateProps { iso8601Date: string, message: string } - -// 그런 다음 DateProps 인터페이스를 사용하는 -// DataComponent를 만들어 날짜를 렌더링 할 수 있습니다. - -const DateComponent: FauxactFunctionComponent = - (props) => - -// 이렇게 하면 객체 변수 Props로 제네릭 함수가 생성됩니다. -// 컴포넌트 함수는 또 다른 컴포넌트 함수나 -// null 값을 반환합니다. - - -// 다른 컴포넌트 API는 클래스 기반입니다. -// 다음은 API에 대한 요약된 설명입니다: - -interface FauxactClassComponent { - props: Props - state: State - - setState: (prevState: State, props: Props) => Props - callback?: () => void - render(): FauxactClassComponent | null -} - -// 이 클래스는 Props와 State를 모두 가지고 있기 때문에 -// 클래스 전체에 사용되는 두 개의 제네릭 인수를 가집니다. - -// React 라이브러리는 위와 같은 자체 타입 정의와 함께 제공되지만 -// 훨씬 더 포괄적입니다. 라이브러리에서 플레이그라운드로 -// 몇 개의 컴포넌트를 가져와 다루어보겠습니다. - -import * as React from 'react'; - -// props는 public API이므로, JSDoc을 사용하여 작동 방식을 -// 설명하고 넘어가겠습니다. - -export interface Props { - /** 사용자 이름 */ - name: string; - /** 이름은 볼드체로 렌더링 돼야 합니다 */ - priority?: boolean; -} - -const PrintName: React.FC = (props) => { - return ( -
-

{props.name}

-
- ) -} - -// 아래에서 새로운 컴포넌트 사용을 실행해볼 수 있습니다: - -const ShowUser: React.FC = (props) => { - return -} - -// TypeScript는 속성의 {} 내부에서 -// intellisense 기능을 지원합니다. - -let username = "Cersei" -const ShowStoredUser: React.FC = (props) => { - return -} - -// TypeScript는 최신 React 코드에서도 작동합니다. -// 여기서는 count 및 setCount가 useState에 전달된 -// 초기 값을 기반으로 숫자를 사용한다는 것을 -// 유추할 수 있습니다. - -import { useState, useEffect } from 'react'; - -const CounterExample = () => { - const [count, setCount] = useState(0); - - useEffect(() => { - document.title = `You clicked ${count} times`; - }); - - return ( -
-

You clicked {count} times

- -
- ); -} - -// React와 TypeScript는 정말 큰 주제이지만 -// 그 기본 토대는 매우 작습니다: TypeScript는 -// JSX를 지원하며 나머지는 Definitely Typed에 의한 -// React 타입으로 처리됩니다. - -// 아래의 사이트에서 Typescript로 React를 -// 사용하는 방법에 대해 더 자세히 알아볼 수 있습니다. -// -// https://github.com/typescript-cheatsheets/react-typescript-cheatsheet -// https://egghead.io/courses/use-typescript-to-develop-react-applications -// https://levelup.gitconnected.com/ultimate-react-component-patterns-with-typescript-2-8-82990c516935 diff --git a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Web.js b/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Web.js deleted file mode 100644 index d3cb033f3c9b..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/External APIs/TypeScript with Web.js +++ /dev/null @@ -1,79 +0,0 @@ -//// { order: 0, isJavaScript: true } - -// DOM(문서 객체 모델)은 웹페이지 동작을 위한 하위 API 요소입니다. -// 그리고 TypeScript는 해당 API를 다루는 -// 훌륭한 지원을 제공하고 있습니다. - -// 상단 메뉴바에서 "Run"을 클릭했을 때 -// popover가 보일 수 있도록 구현해보겠습니다. - -const popover = document.createElement("div"); -popover.id = "example-popover"; - -// 명확하게 "div"값을 전달했기 때문에 -// popover가 정확히 HTMLDivElement 타입이 된 것에 유의하십시오. - -// 이 코드를 재실행하기 위해 -// 먼저 기존 popover를 삭제하는 함수를 추가하겠습니다. - -const removePopover = () => { - const existingPopover = document.getElementById(popover.id); - if (existingPopover && existingPopover.parentElement) { - existingPopover.parentElement.removeChild(existingPopover); - } -}; - -// 이제 함수를 바로 실행해보겠습니다. - -removePopover(); - -// HTMLElement에 있는 .style 프로퍼티를 통해 -// 요소의 인라인 스타일을 설정할 수 있습니다. - 이는 완전한 형태로 작성됩니다. - -popover.style.backgroundColor = "#0078D4"; -popover.style.color = "white"; -popover.style.border = "1px solid black"; -popover.style.position = "fixed"; -popover.style.bottom = "10px"; -popover.style.left = "20px"; -popover.style.width = "200px"; -popover.style.height = "100px"; -popover.style.padding = "10px"; - -// 모호하거나, 더 이상 사용하지 않는 CSS 속성값을 포함합니다. -popover.style.webkitBorderRadius = "4px"; - -// popover에 내용을 추가하기 위해, -// p 요소를 생성해 텍스트를 추가해보겠습니다. - -const message = document.createElement("p"); -message.textContent = "Here is an example popover"; - -// 그리고 팝업을 닫는 버튼도 추가해보겠습니다. - -const closeButton = document.createElement("a"); -closeButton.textContent = "X"; -closeButton.style.position = "absolute"; -closeButton.style.top = "3px"; -closeButton.style.right = "8px"; -closeButton.style.color = "white"; - -closeButton.onclick = () => { - removePopover(); -}; - -// 이제 페이지에 모든 요소들을 넣어보겠습니다. -popover.appendChild(message); -popover.appendChild(closeButton); -document.body.appendChild(popover); - -// 만약 상단의 "Run"을 클릭한다면, -// 팝업이 하단 왼쪽에 나타날 것입니다. -// 해당 팝업은 상단 오른쪽 x 버튼을 클릭해 닫을 수 있습니다. - -// 이 예제는 JavaScript에서 DOM API가 동작하는 방식을 보여주고 있지만, -// TypeScript에서 제공하는 좋은 도구 지원을 이용하여 -// 해당 작업을 할 수 있습니다. - -// TypeScript 도구 WebGL를 이용해 해당 작업을 확장한 예제는 -// 이곳에서 볼 수 있습니다: example:typescript-with-webgl diff --git a/packages/playground-examples/copy/ko/JavaScript/Functions with JavaScript/Generic Functions.ts b/packages/playground-examples/copy/ko/JavaScript/Functions with JavaScript/Generic Functions.ts deleted file mode 100644 index 663bff3935d6..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Functions with JavaScript/Generic Functions.ts +++ /dev/null @@ -1,100 +0,0 @@ -// 제네릭(Generics)은 타입을 다른 타입의 변수로 -// 사용하는 방법과 메타데이터를 제공합니다. - -// 이 예제는 앞으로도 가볍게 유지될 것입니다. -// 여러분은 제네릭으로 많은 작업을 수행하게 될 수도 있고, -// 언젠가는 제네릭을 사용하는 매우 복잡한 코드를 볼 수도 있습니다. -// 그렇다고 제네릭이 복잡하다는 이야기는 아닙니다. - -// 입력 객체를 배열로 감싸는 예부터 살펴보겠습니다. -// 이 경우 전달된 하나의 변수에 대한 타입만 -// 고려하면 됩니다: - -function wrapInArray(input: Type): Type[] { - return [input]; -} - -// 참고: T 타입은 흔히 볼 수 있습니다. -// 이는 문화적으로 사람들이 for 루프에서 -// 색인으로 i 변수를 사용하는 것과 유사합니다. -// T는 일반적으로 Type을 나타내므로 명확성을 위해서는 전체 이름을 사용합니다. - -// 위 함수는 전달된 변수 타입을 항상 유지시켜 -// (배열 형태지만) 같은 변수 타입으로 전달할 수 있도록 -// 인터페이스를 사용합니다. - -const stringArray = wrapInArray("hello generics"); -const numberArray = wrapInArray(123); - -// 객체 배열을 반환하는 함수에 string 배열을 -// 할당할 수 있는지 확인하는 것을 통해 -// 예상대로 동작하는지 확인할 수 있습니다: -const notStringArray: string[] = wrapInArray({}); - -// 다음과 같이 타입을 직접 추가하여 -// 제네릭 인터페이스를 건너 뛸 수도 있습니다: -const stringArray2 = wrapInArray(""); - -// wrapInArray 함수에는 -// 모든 타입이 사용될 수 있지만, -// 타입의 일정 부분만을 허용하는 경우도 있습니다. -// 이 경우 타입이 특정 타입을 확장해야 한다고 할 수 있습니다. - -interface Drawable { - draw: () => void; -} - -// 이 함수는 화면에 그리는 기능을 가진 함수가 있는 -// 객체 집합을 취합니다. -function renderToScreen(input: Type[]) { - input.forEach(i => i.draw()); -} - -const objectsWithDraw = [{ draw: () => {} }, { draw: () => {} }]; -renderToScreen(objectsWithDraw); - -// draw 함수가 누락되면 이 함수는 동작하지 않습니다: - -renderToScreen([{}, { draw: () => {} }]); - -// 제네릭은 여러 변수를 다룰 때 -// 복잡해 보일 수 있습니다. -// 다음은 다양한 입력 타입과 -// 캐시의 집합을 가진 캐싱 함수의 예제입니다. - -interface CacheHost { - save: (a: any) => void; -} - -function addObjectToCache(obj: Type, cache: Cache): Cache { - cache.save(obj); - return cache; -} - -// 이는 위 예제와 동일하지만 추가 파라미터가 있습니다. -// 참고: 위에서는 동작을 수행하기 위해서 any 타입을 사용해야 했습니다. -// 이 문제는 제네릭 인터페이스를 사용하여 해결할 수 있습니다. - -interface CacheHostGeneric { - save: (a: ContentType) => void; -} - -// 이제 CacheHostGeneric을 사용할 때는 -// ContentType이 무엇인지 명시해 주어야 합니다. - -function addTypedObjectToCache>(obj: Type, cache: Cache): Cache { - cache.save(obj); - return cache; -} - -// 제네릭은 문법 측면에서 꽤 빠르게 내용이 확장되었지만, -// 더 많은 안전성을 제공합니다. -// 이는 상호 절충으로 더 많은 지식을 쌓을 수 있습니다. -// 다른 사용자에게 API를 제공할 때 제네릭은 사용자 고유의 타입을 -// 전체 코드 인터페이스와 함께 사용할 수 있는 유연한 방법을 제공합니다. - -// 클래스와 인터페이스가 있는 제네릭의 더 많은 예제는 여기서 볼 수 있습니다: -// -// example:advanced-classes -// example:typescript-with-react -// https://www.typescriptlang.org/docs/handbook/generics.html diff --git a/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Functions.ts b/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Functions.ts deleted file mode 100644 index 5799392d4d90..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Functions.ts +++ /dev/null @@ -1,89 +0,0 @@ -//// { order: 2, compiler: { noImplicitAny: false } } - -// JavaScript에서 함수를 선언하는 방식에는 -// 여러 가지가 있습니다. 두 숫자를 더하는 -// 함수를 한번 살펴보겠습니다: - -// 전역 스코프에 addOldSchool라는 이름으로 함수를 생성합니다 -function addOldSchool(x, y) { - return x + y; -} - -// 또한 함수의 이름을 변수로 -// 옮길 수 있습니다 -const anonymousOldSchoolFunction = function (x, y) { - return x + y; -}; - -// 함수 선언에 화살표 함수 또한 사용할 수 있습니다 -const addFunction = (x, y) => { - return x + y; -}; - -// 우리는 마지막 방식에 초점을 맞추겠습니다. -// 하지만 세 가지 방식에 똑같이 적용됩니다. - -// TypeScript는 함수 정의에 -// 추가 구문을 제공하고 해당 함수에서 -// 예상되는 타입에 대한 힌트를 제공합니다. -// -// 다음은 add 함수의 가장 열려있는 버전으로, -// add 함수는 any 타입의 두 개의 입력을 받습니다: 이것은 -// 문자열, 숫자 또는 객체가 될 수 있습니다. - -const add1 = (x: any, y: any) => { - return x + y; -}; -add1("Hello", 23); - -// JavaScript에서는 타당하지만 (예시와 같이 문자열도 -// 더해질 수 있습니다) 우리가 의도한 숫자를 더하는 -// 함수와는 맞지 않으므로, 우리는 x와 y를 숫자만 -// 허용하게 변환합니다. - -const add2 = (x: number, y: number) => { - return x + y; -}; -add2(16, 23); -add2("Hello", 23); - -// 좋습니다. 이제 숫자 이외의 값이 전달되면 에러가 -// 발생합니다. 만약 add2 단어 위로 마우스를 가져가면 -// TypeScript가 다음과 같이 설명하는 것을 볼 수 있습니다. -// -// const add2: (x: number, y: number) => number -// -// 두 입력이 number일 때 가능한 반환 유형은 오로지 -// number라고 추론합니다. 훌륭합니다. 이것은 추가 구문을 -// 작성할 필요가 없게 해줍니다. -// 이를 수행하는 데 필요한 사항을 살펴보겠습니다: - -const add3 = (x: number, y: number): string => { - return x + y; -}; - -// 이 함수는 에러를 발생시킵니다. 왜냐하면 TypeScript는 -// string 값이 반환되는 것으로 알고 있지만 함수는 -// 그 약속을 지키지 못했기 때문입니다. - -const add4 = (x: number, y: number): number => { - return x + y; -}; - -// 이것은 add2의 매우 명시적인 버전입니다 -// - 시작 하기 전에 자신에게 작업공간을 제공하기 -// 위해 명시적인 반환 타입 구문을 사용하는 경우가 -// 있습니다. 테스트 기반 개발에서 실패한 테스트로 -// 시작하는 것이 권장되는 방식과 비슷하지만, 이 경우에는 -// 대신 실패한 함수 형태가 있습니다. - -// 이 예제는 입문서일 뿐입니다. 핸드북과 다음 예시의 -// Functional JavaScript 섹션 내에서 TypeScript의 함수가 -// 어떻게 작동하는지에 대한 더 많은 것들을 배울 수 있습니다: -// -// https://www.typescriptlang.org/docs/handbook/functions.html -// example:function-chaining - -// 그리고 JavaScript 필수 사항을 계속 살펴보기 위해, -// 코드 흐름이 TypeScript 유형에 어떤 영향을 미치는지 살펴보겠습니다: -// example:code-flow diff --git a/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Hello World.ts b/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Hello World.ts deleted file mode 100644 index fcb0bb8dd12d..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/JavaScript Essentials/Hello World.ts +++ /dev/null @@ -1,34 +0,0 @@ -//// { order: 0, compiler: { target: 1 } } - -// TypeScript 플레이그라운드에 오신 것을 환영합니다. -// 이곳은 TypeScript를 웹 브라우저에서 실행하는 환경과 거의 비슷합니다. - -// 플레이그라운드에서 간단하게 -// 프로젝트를 공유할 수 있기 때문에, TypeScript로 아이디어를 -// 쉽고 안전하게 실험할 수 있습니다. 이 페이지의 URL만 -// 다른 사람에게 공유하면 됩니다. - -const hello = "Hello"; - -// 오른쪽에서 TypeScript 컴파일러의 결과를 볼 수 -// 있습니다. 결과는 브라우저나 서버 및 어디에서나 -// 실제로 실행할 수 있는 vanilla JavaScript입니다. - -const world = "World"; - -// "const"를 "var"로 변환하면 코드에서 작은 변화를 -// 확인할 수 있습니다. 이것은 TypeScript를 -// 모든 JavaScript 환경에서 실행 가능하도록 -// 수행하는 많은 작업 중 하나입니다. - -console.log(hello + " " + world); - -// 이제 플레이그라운드가 어떻게 동작하는지 알게 되었으니, -// TypeScript가 JavaScript 작업을 더 즐겁게 만드는 방법을 알아봅시다. -// 여기서는 어떻게 기존 지식을 재사용할 수 있는지 -// 보여주기 위해, 가능한 한 vanilla JavaScript에 -// 가깝게 유지하겠습니다. -// -// 계속하려면 아래를 클릭하세요: -// -// example:objects-and-arrays diff --git a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Async Await.ts b/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Async Await.ts deleted file mode 100644 index ffa88cb757f4..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Async Await.ts +++ /dev/null @@ -1,109 +0,0 @@ -//// { order: 1, target: "es5" } - -// 모던 JavaScript는 특별한 구문의 -// 프로미스(Promise) 기반 API를 추가하여 -// 비동기 코드가 동기적으로 작동하는 것처럼 -// 콜백을 처리하는 방법을 추가했습니다. - -// 모든 언어 기능과 마찬가지로, -// 이러한 방식은 복잡성이 증가하는 대신 효율성이 증가합니다. -// 함수를 async로 만드는 것은 반환값을 프로미스 형태로 감싸주는 것을 의미합니다. -// 기존에는 string을 반환했지만 이제 Promise을 반환합니다. - -const func = () => ":wave:"; -const asyncFunc = async () => ":wave:"; - -const myString = func(); -const myPromiseString = asyncFunc(); - -myString.length; - -// myPromiseString은 string이 아닌 프로미스 입니다: - -myPromiseString.length; - -// await 키워드를 사용하면 -// 프로미스를 내부의 값으로 변환할 수 있습니다. -// 현재 이러한 기능은 async 함수 내에서만 작동합니다. - -const myWrapperFunction = async () => { - const myString = func(); - const myResolvedPromiseString = await asyncFunc(); - - // await 키워드를 통해 - // 이제 myResolvedPromiseString 값은 문자열입니다. - myString.length; - myResolvedPromiseString.length; -}; - -// await을 통해 실행되는 코드는 오류 객체를 발생시킬 수 있고, -// 이러한 오류를 잡아내는 것이 중요합니다. - -const myThrowingFunction = async () => { - throw new Error("Do not call this"); -}; - -// async 함수를 try catch 문으로 감싸 -// 함수가 예기치 않게 작동하는 경우를 처리합니다. - -const asyncFunctionCatching = async () => { - const myReturnValue = "Hello world"; - try { - await myThrowingFunction(); - } catch (error) { - console.error("myThrowingFunction failed", error); - } - return myReturnValue; -}; - -// 단일 값을 반환하거나 오류를 발생시키는 -// API의 인간 공학적 특성 때문에, -// 반환 값 내부의 결괏값에 대한 정보 제공을 고려해야 하며, -// 실제 예외적인 상황이 발생했을 때만 -// throw 문을 사용해야 합니다. - -const exampleSquareRootFunction = async (input: any) => { - if (isNaN(input)) { - throw new Error("Only numbers are accepted"); - } - - if (input < 0) { - return { success: false, message: "Cannot square root negative number" }; - } else { - return { success: true, value: Math.sqrt(input) }; - } -}; - -// 그런 다음 해당 비동기 함수를 받는 객체로 응답 상태를 확인하고 -// 반환 값으로 무엇을 처리할지 알아냅니다. -// 이것은 사소한 예제지만, 네트워킹에 관련된 코드를 작성한다면 -// 이러한 API는 구문을 추가할만한 가치가 있습니다. - -const checkSquareRoot = async (value: number) => { - const response = await exampleSquareRootFunction(value); - if (response.success) { - response.value; - } -}; - -// Async/Await 구문은 다음과 같은 코드를 사용해왔습니다: - -// getResponse(url, (response) => { -// getResponse(response.url, (secondResponse) => { -// const responseData = secondResponse.data -// getResponse(responseData.url, (thirdResponse) => { -// ... -// }) -// }) -// }) - -// 이를 순차적으로 작성하면: - -// const response = await getResponse(url) -// const secondResponse = await getResponse(response.url) -// const responseData = secondResponse.data -// const thirdResponse = await getResponse(responseData.url) -// ... - -// 코드가 왼쪽 가장자리에 가깝게 배치되어, -// 코드가 일관된 리듬으로 읽힐 수 있습니다. diff --git a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Immutability.ts b/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Immutability.ts deleted file mode 100644 index 2c32a6cce3f5..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Immutability.ts +++ /dev/null @@ -1,57 +0,0 @@ -// JavaScript에는 객체를 불변으로 선언할 수 있는 몇 가지 방법이 있슴니다. -// 가장 일반적으로는 const를 쓰는 것입니다. -// const를 사용하면 값이 변하지 않습니다. - -const helloWorld = "Hello World"; - -// 지금은 helloWorld를 바꿀 수 없습니다. -// 런타임에서 값을 얻게 되면 -// TypeScript는 에러를 발생시키기 때문입니다. - -helloWorld = "Hi world"; - -// 왜 불변성을 신경 써야 할까요? -// 가장 큰 이유는 코드의 복잡성을 줄이는 데 있습니다. -// 값이 변하는 대상을 줄일 수 있다면, -// 추적할 일이 줄어듭니다. - -// const를 사용하는 것은 훌륭한 첫 단계지만, -// 객체를 사용할 때는 적용되지 않습니다. - -const myConstantObject = { - msg: "Hello World", -}; - -// myConstantObject는 상수가 될 수 없습니다. -// 여전히 객체의 일부를 변경할 수 있기 때문입니다. -// 예를 들어, msg를 변경할 수 있습니다. - -myConstantObject.msg = "Hi World"; - -// const는 그 시점에 가리키는 값이 같은 값을 유지함을 의미하는데, -// 객체 그 자체로는 내부적으로 바뀔 수 있습니다. -// 이는 Object.freeze를 이용하여 바꿀 수 있습니다. - -const myDefinitelyConstantObject = Object.freeze({ - msg: "Hello World", -}); - -// 객체가 freeze되면, 내부 요소들을 바꿀 수 없습니다. -// TypeScript에서는 이 경우 에러가 발생합니다. - -myDefinitelyConstantObject.msg = "Hi World"; - -// 이는 배열에도 똑같이 적용됩니다. - -const myFrozenArray = Object.freeze(["Hi"]); -myFrozenArray.push("World"); - -// freeze를 사용함으로써 -// 객체가 내부적으로 동일하게 유지된다고 확신할 수 있습니다. - -// TypeScript에는 불변 데이터를 다루는 것을 향상시키기 위한 -// 몇몇 추가적인 hook 문법이 있습니다. -// 아래 예시의 TypeScript 섹션에서 확인할 수 있습니다. -// -// example:literals -// example:type-widening-and-narrowing diff --git a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Import Export.ts b/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Import Export.ts deleted file mode 100644 index cab23d3fa291..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/Import Export.ts +++ /dev/null @@ -1,109 +0,0 @@ -//// { order: 1, target: "ES5" } - -// JavaScript는 2016년에 import/export를 다시 추가하였고 -// TypeScript는 파일들과 외부 모듈로의 연결에 관한 -// 이 스타일을 완전히 지원합니다. -// TypeScript는 코드와 전달될 타입들을 허용함으로써 -// 이 문법을 확장시킵니다. - -// 모듈에서 코드를 import하는 것을 보겠습니다. - -import { danger, message, warn, DangerDSLType } from "danger"; - -// danger라는 node 모듈에서 일련의 이름 붙은 import를 가져옵니다. -// 4개 이상의 import를 할 수 있지만, -// 이것들이 우리가 import하기로 선택한 것들입니다. - -// 여러분이 무엇을 import하는지 이름을 구체적으로 적으면 -// 앱에서 사용되지 않는 코드를 제거할 수 있으며 -// 특정 파일에서 무엇이 사용되는지 -// 쉽게 이해할 수 있습니다. - -// 이 경우: danger, message, warn은 JavaScript import입니다. -// 반면 DangerDSLType은 인터페이스 타입입니다. - -// TypeScript는 JSDoc을 이용하여 개발자의 코드를 문서화하며, -// 문서들은 또 import됩니다. -// 예를 들어 만약 아래의 서로 다른 부분들에 커서를 올리면, -// 각각에 대한 설명을 볼 수 있습니다. - -danger.git.modified_files; - -// 이러한 문서 표기를 제공하는 방법을 알고 싶다면 -// example:jsdoc-support를 참고하세요. - -// 코드를 import하는 다른 방식은 -// 모듈의 default export를 사용하는 것입니다. -// 이 예제는 디버그 모듈로, 로그 기능을 하는 함수를 내보냅니다. - -import debug from "debug"; -const log = debug("playground"); -log("Started running code"); - -// default export는 실제 이름이 없기 때문에, -// TypeScript의 리팩토링 지원과 같은 -// 정적 분석 도구가 적용되었을 때 까다로울 수 있지만 -// 각각의 사용법이 있습니다. - -// JavaScript의 importing/exporting 코드에는 오랜 역사가 있기 때문에, -// default exports에는 헷갈리는 부분이 있습니다. -// 몇몇 export에 관한 문서에 따르면 -// import를 아래와 같은 식으로 쓰는 것을 볼 수 있습니다. - -import req from "request"; - -// 하지만 이것은 오류를 발생시키는데, stack overflow를 찾아보면 -// import를 다음과 같이 제안합니다. - -import * as req from "request"; - -// 그리고 이것은 작동합니다. 왜일까요? -// exporting에 대한 섹션의 끝부분에서 다시 확인해보겠습니다. - -// import하기 위해서는, export할 수 있어야 합니다. -// export를 쓰는 최신 방식은 export 키워드를 쓰는 것입니다. - -/** 현재 롤에 남아 있는 스티커 수 */ -export const numberOfStickers = 11; - -// 다른 파일에서 아래와 같이 import할 수 있습니다. -// -// import { numberOfStickers } from "./path/to/file" - -// 하나의 파일에 원하는 만큼 많은 import를 할 수 있습니다. -// default export도 비슷합니다. - -/** 스티커를 만들어 줍니다. */ -const stickerGenerator = () => {}; -export default stickerGenerator; - -// 다른 파일에서 아래와 같이 import할 수 있습니다. -// -// import getStickers from "./path/to/file" -// -// 이름은 모듈을 사용하는 곳에서 붙입니다. - -// 이는 import의 유일한 형태가 아니라 최신 코드의 가장 일반적인 방법입니다. -// 모듈 간의 경계를 넘나들 수 있는 코드의 모든 방식을 다루는 것은 -// 핸드북에서 다루기에는 너무 긴 토픽입니다. -// -// https://www.typescriptlang.org/docs/handbook/modules.html - -// 하지만, 마지막 질문을 해결해봅시다. -// 다음 예제의 JavaScript 코드를 보면 - 이것을 볼 수 있습니다: - -// var stickerGenerator = function () { }; -// exports.default = stickerGenerator; - -// export의 기본 프로퍼티 객체를 -// stickerGenerator로 설정합니다. -// export를 객체 대신 함수로 설정하는 코드가 있습니다. -// -// TypeScript는 그러한 경우들을 다루기 위해 -// ECMAScript 표준을 선택헀고, -// 이를 통해 에러를 발생시킵니다. -// 하지만 자동으로 그러한 경우들을 해결해주는 -// esModuleInterop이라는 컴파일러 세팅이 있습니다. -// -// 이 예제에 해당 세팅을 설정하면, -// 에러가 사라질 것입니다. diff --git a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/JSDoc Support.js b/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/JSDoc Support.js deleted file mode 100644 index e49675ffbc83..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Modern JavaScript/JSDoc Support.js +++ /dev/null @@ -1,94 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// TypeScript는 매우 많은 JSDoc 지원을 제공하며 -// 많은 경우에서 .ts 파일을 건너뛸 수도 있고 -// JSDoc 어노테이션을 사용하여 풍부한 개발환경을 만들 수도 있습니다. -// -// JSDoc 주석은 별표가 1개 대신에 2개로 시작하는 -// 멀티라인 주석입니다. - -/* 일반 주석입니다 */ -/** JSDoc 주석입니다 */ - -// JSDoc 주석은 밑에 있는 가장 가까운 -// JavaScript 코드에 첨부합니다. - -const myVariable = "Hi"; - -// myVariable에 호버한다면, -// 내부에서 첨부된 JSDoc 주석 내용을 볼 수 있습니다. - -// JSDoc 주석은 TypeScript와 에디터에게 타입 정보를 제공하는 방법입니다. -// 하나의 변수의 타입을 기본 제공된 타입으로 -// 설정하는 방법을 사용하여 시작해봅시다. - -// 모든 예제에서 이름에 호버할 수 있으며, -// 다음 라인에서 [example]. 을 작성하고 -// 자동완성 옵션을 확인해 보세요. - -/** @type {number} */ -var myNumber; - -// 핸드북에서 지원하는 모든 태그를 확인하실 수 있습니다: -// -// https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc - -// 하지만, 여기에서 좀 더 일반적인 예제를 더 살펴볼 것입니다. -// 여러분은 핸드북에서 어떠한 예시도 -// 이곳에 복사 & 붙여넣기를 하실 수 있습니다. - -// JavaScript configuration 파일에 대한 타입을 가져오기: - -/** @type { import("webpack").Config } */ -const config = {}; - -// 여러 곳에서 재사용할 복합 타입을 생성하기: - -/** - * @typedef {Object} User - User 계정 - * @property {string} displayName - 표시할 이름 - * @property {number} id - 고유 id - */ - -// 그러고 나서 typedef 이름을 참조하여 복합 타입을 사용합니다: - -/** @type { User } */ -const user = {}; - -// type과 typedef 모두 사용할 수 있는 -// TypeScript 호환 인라인 타입 줄임말이 있습니다: - -/** @type {{ owner: User, name: string }} */ -const resource; - -/** @typedef {{owner: User, name: string}} Resource */ - -/** @type {Resource} */ -const otherResource; - -// 타입을 명시한 함수 선언: - -/** - * 두 개의 숫자를 같이 추가합니다 - * @param {number} a 첫 번째 숫자 - * @param {number} b 두 번째 숫자 - * @returns {number} - */ -function addTwoNumbers(a, b) { - return a + b; -} - -// 유니온 타입처럼 대부분의 TypeScript 타입 도구를 사용할 수 있습니다: - -/** @type {(string | boolean)} */ -let stringOrBoolean = ""; -stringOrBoolean = false; - -// JSDoc에서 전역 파일을 확장하는 것은 -// VS Code 문서에서 볼 수 있는 더 복잡한 프로세스입니다: -// -// https://code.visualstudio.com/docs/nodejs/working-with-javascript#_global-variables-and-type-checking - -// 함수에 JSDoc 주석을 추가하는 것은 -// 여러분이 더 좋은 도구를 얻게 되고 여러분의 모든 API 사용자들도 그럴 것이므로 -// 서로가 win-win 하는 상황입니다. \ No newline at end of file diff --git a/packages/playground-examples/copy/ko/JavaScript/Working With Classes/This.ts b/packages/playground-examples/copy/ko/JavaScript/Working With Classes/This.ts deleted file mode 100644 index b5df3d6422da..000000000000 --- a/packages/playground-examples/copy/ko/JavaScript/Working With Classes/This.ts +++ /dev/null @@ -1,91 +0,0 @@ -//// { order: 2 } - -// 클래스의 메서드를 호출할 때, -// 일반적으로 클래스의 현재 인스턴스를 참조할 것으로 예상합니다. - -class Safe { - contents: string; - - constructor(contents: string) { - this.contents = contents; - } - - printContents() { - console.log(this.contents); - } -} - -const safe = new Safe("Crown Jewels"); -safe.printContents(); - -// this/self를 쉽게 예상할 수 있는 객체지향언어 경험이 있다면 -// 'this'가 얼마나 혼란스러울 수 있는지 -// 확인할 필요가 있습니다: -// -// https://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/ -// https://aka.ms/AA5ugm2 - -// 짧은 요약: this는 바뀔 수 있습니다. -// 여러분이 함수를 어떻게 호출하는지에 따라 this 참조가 달라질 것입니다. - -// 예를 들어, -// 다른 객체의 함수에 대한 참조를 사용하고 이를 호출하면 -// this 변수는 호스팅 객체를 참조하도록 이동됩니다: - -const customObjectCapturingThis = { contents: "http://gph.is/VxeHsW", print: safe.printContents }; -customObjectCapturingThis.print(); // "Crown Jewels"가 아닌 "http://gph.is/VxeHsW"를 출력합니다. - -// 콜백 API를 다룰 때, 함수 참조를 직접 전달하는 것이 -// 매우 용이할 수 있지만 까다롭습니다. -// 호출 위치에서 새로운 함수를 생성함으로써 -// 이 문제를 해결할 수 있습니다. - -const objectNotCapturingThis = { contents: "N/A", print: () => safe.printContents() }; -objectNotCapturingThis.print(); - -// 문제를 해결하는 몇 가지 방법이 있습니다. -// 하나는 강제로 this 바인딩을 -// bind를 통하여 원래 의도했던 객체로 만듭니다. - -const customObjectCapturingThisAgain = { contents: "N/A", print: safe.printContents.bind(safe) }; -customObjectCapturingThisAgain.print(); - -// 예기치 못한 이 context를 해결하기 위하여, -// 클래스에서 함수를 생성하는 방법을 변경할 수도 있습니다. -// 화살표 함수를 사용하는 프로퍼티를 만듦으로써, -// this의 바인딩은 다른 시간에 수행합니다. -// 따라서 덜 수행했던 context는 JavaScript 런타임에 -// 더 예측할 수 있습니다. - -class SafelyBoundSafe { - contents: string; - - constructor(contents: string) { - this.contents = contents; - } - - printContents = () => { - console.log(this.contents); - }; -} - -// 이제 실행하기 위해 다른 객체에 함수를 전달하는 것은 -// 뜻하지 않게 this를 변경하지 않습니다. - -const saferSafe = new SafelyBoundSafe("Golden Skull"); -saferSafe.printContents(); - -const customObjectTryingToChangeThis = { - contents: "http://gph.is/XLof62", - print: saferSafe.printContents, -}; - -customObjectTryingToChangeThis.print(); - -// 여러분이 TypeScript 프로젝트를 갖고 있다면, -// TypeScript가 함수에 대한 "this"가 어떤 타입인지 결정할 수 없는 경우를 -// 강조하기 위해서, 컴파일러 플래그 noImplicitThis를 사용할 수 있습니다. - -// 여러분은 핸드북에서 더 자세히 배울 수 있습니다: -// -// https://www.typescriptlang.org/docs/handbook/utility-types.html#thistypet diff --git a/packages/playground-examples/copy/ko/Playground/Config/JavaScript Playgrounds.js b/packages/playground-examples/copy/ko/Playground/Config/JavaScript Playgrounds.js deleted file mode 100644 index b1db2ead632d..000000000000 --- a/packages/playground-examples/copy/ko/Playground/Config/JavaScript Playgrounds.js +++ /dev/null @@ -1,36 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// 이제 플레이그라운드에서 JavaScript 파일을 다룰 수 ​​있습니다. - -// 플레이그라운드에서 JavaScript를 지원하는 이유에 대해 -// 의문을 갖는 건 당연합니다. 왜냐하면 -// 대부분의 TypeScript 사용자는 JavaScript를 사용하고 있기 때문입니다. - -// TypeScript는 유추된 타입들과 타입의 획득을 사용할 수 있으며 -// JavaScript 파일에서 JSDoc 지원을 통해 -// 뛰어난 툴링 환경을 제공합니다: -// -// 예시: 객체 및 배열 -// 예시: 자동 타입 획득 -// 예시: jsdoc 지원 - -// 플레이그라운드가 JavaScript를 지원하기 때문에 -// 복잡한 JSDoc 예제를 통해 학습하거나 가이드할 수 있고, -// 또는 불일치가 예상될 때 -// 문제를 디버그할 수 있습니다. - -// 예를 들어, 이 JSDoc 주석이 -// 올바르게 입력되지 않은 이유는 뭘까요? - -/** - * 두 숫자를 더합니다. - * @파라미터 {number}는 첫 번째 숫자입니다. - * @파라미터 {number}는 두 번째 숫자입니다. - * {number}를 @리턴 합니다. - */ -function addTwoNumbers(a, b) { - return a + b; -} - -// 마우스를 가져가면, 무슨 일이 일어나고 있는지 즉시 볼 수 있는 환경에서 -// 이를 파악하기가 훨씬 쉽습니다. diff --git a/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Enums.ts b/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Enums.ts deleted file mode 100644 index 3a944e153a0e..000000000000 --- a/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Enums.ts +++ /dev/null @@ -1,81 +0,0 @@ -// 열거형은 TypeScript로 쓰는 JavaScript에 추가된 기능입니다. -// 이를 통해 이름 붙은 변수들의 집합을 쉽게 다룰 수 있습니다. - -// 기본적으로 열거형은 0부터 시작하는 숫자 기반이며, -// 각 항목은 1씩 증가하여 할당됩니다. -// 이는 값이 중요하지 않을 때 유용합니다. - -enum CompassDirection { - North, - East, - South, - West, -} - -// 열거 항목을 표기하여 값을 지정할 수 있으며, -// 그 값에서부터 증가가 시작됩니다: - -enum StatusCodes { - OK = 200, - BadRequest = 400, - Unauthorized, - PaymentRequired, - Forbidden, - NotFound, -} - -// EnumName.Value을 사용하여 열거형을 참조할 수 있습니다. - -const startingDirection = CompassDirection.East; -const currentStatus = StatusCodes.OK; - -// 열거형을 사용하여 key에서 value, 그리고 value에서 key 모든 방향으로 -// 데이터에 접근할 수 있습니다. - -const okNumber = StatusCodes.OK; -const okNumberIndex = StatusCodes["OK"]; -const stringBadRequest = StatusCodes[400]; - -// 열거형은 여러 타입일 수 있지만, 일반적으로 string 타입입니다. -// string을 사용하면 디버깅이 쉬워지는데, -// 런타임에서의 값을 통해 숫자를 찾아볼 필요가 없어지기 때문입니다. - -enum GamePadInput { - Up = "UP", - Down = "DOWN", - Left = "LEFT", - Right = "RIGHT", -} - -// 만약 JavaScript 런타임에서 사용되는 객체의 수를 줄이고 싶다면, -// const enum을 쓸 수 있습니다. - -// const enum의 값은 -// 런타임에서 객체를 통해 찾아지는 대신 -// 코드를 트랜스파일하는 과정에서 대체됩니다. - -const enum MouseAction { - MouseDown, - MouseUpOutside, - MouseUpInside, -} - -const handleMouseAction = (action: MouseAction) => { - switch (action) { - case MouseAction.MouseDown: - console.log("Mouse Down"); - break; - } -}; - -// 트랜스파일된 JavaScript 코드를 보면, -// 다른 열거형들이 객체나 함수 형태로 존재하는 것을 볼 수 있지만, -// MouseAction은 그렇지 않습니다. - -// 이는 handleMouseAction 안의 switch문에 있는 -// MouseAction.MouseDown의 경우에도 마찬가지입니다. - -// 열거형에는 이것보다 더 많은 기능이 있습니다. -// TypeScript 핸드북에서 더 알아볼 수 있습니다. -// -// https://www.typescriptlang.org/docs/handbook/enums.html diff --git a/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Types vs Interfaces.ts b/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Types vs Interfaces.ts deleted file mode 100644 index 8e2107372946..000000000000 --- a/packages/playground-examples/copy/ko/TypeScript/Language Extensions/Types vs Interfaces.ts +++ /dev/null @@ -1,83 +0,0 @@ -// 객체 형태를 선언하는 주요 도구는 두 가지가 있습니다. -// 인터페이스와 타입 별칭입니다. -// -// 이 둘은 무척 비슷하며, -// 대부분 동일하게 작동합니다. - -type BirdType = { - wings: 2; -}; - -interface BirdInterface { - wings: 2; -} - -const bird1: BirdType = { wings: 2 }; -const bird2: BirdInterface = { wings: 2 }; - -// TypeScript는 구조적 타입 시스템을 따르기 때문에, -// 교차하여 사용하는 것도 가능합니다. - -const bird3: BirdInterface = bird1; - -// 둘 다 다른 인터페이스와 타입으로의 확장이 가능합니다. -// 타입 별칭은 교차 타입을 통해 이를 수행하는 반면, -// 인터페이스는 키워드를 사용합니다. - -type Owl = { nocturnal: true } & BirdType; -type Robin = { nocturnal: false } & BirdInterface; - -interface Peacock extends BirdType { - colourful: true; - flies: false; -} -interface Chicken extends BirdInterface { - colourful: false; - flies: false; -} - -let owl: Owl = { wings: 2, nocturnal: true }; -let chicken: Chicken = { wings: 2, colourful: false, flies: false }; - -// 그래도 타입 별칭보다 인터페이스를 쓰는 것을 추천합니다. -// 분명히 더 나은 에러 메시지를 받을 수 있기 때문입니다. -// 뒤따르는 에러에 커서를 가져가면, -// Chicken과 같은 인터페이스를 사용했을 때 -// TypeScript가 더 간결하고 정확한 메시지를 어떻게 제공하는지 알 수 있습니다. - -owl = chicken; -chicken = owl; - -// 타입 별칭과 인터페이스 사이 한 가지 주요한 차이점은 -// 인터페이스는 열려 있고 타입 별칭은 닫혀 있다는 것입니다. -// 이는 인터페이스를 다음에 선언할 때 -// 확장할 수 있음을 의미합니다. - -interface Kitten { - purrs: boolean; -} - -interface Kitten { - colour: string; -} - -// 이와 달리 타입은 선언 바깥에서 -// 변경할 수 없습니다. - -type Puppy = { - color: string; -}; - -type Puppy = { - toys: number; -}; - -// 목적에 따라서, 이 차이는 좋을 수도 나쁠 수도 있습니다. -// 하지만 공개된 타입들의 경우, -// 그것들을 인터페이스로 만드는 것이 더 좋습니다. - -// 타입과 인터페이스에 대한 모든 엣지 케이스를 알고 싶다면, -// 아래 stack overflow thread가 -// 시작하기 좋은 훌륭한 자료가 될 것입니다. - -// https://stackoverflow.com/questions/37233735/typescript-interfaces-vs-types/52682220#52682220 diff --git a/packages/playground-examples/copy/ko/TypeScript/Primitives/Any.ts b/packages/playground-examples/copy/ko/TypeScript/Primitives/Any.ts deleted file mode 100644 index ee329a6287aa..000000000000 --- a/packages/playground-examples/copy/ko/TypeScript/Primitives/Any.ts +++ /dev/null @@ -1,50 +0,0 @@ -// any는 TypeScript의 탈출 구문입니다. -// 일부 코드를 JavaScript처럼 동적으로 동작하도록 선언하고 싶을 때, -// 또는 타입 시스템의 제한을 벗어나고 싶을 때 -// any를 사용할 수 있습니다. - -// JSON 파싱은 any의 좋은 예시입니다. - -const myObject = JSON.parse("{}"); - -// any를 사용한다는 것은 여러분이 코드를 더 잘 알고 있음을 뜻하기 때문에, -// 타입이 완전히 정확하지 않더라도 TypeScript는 코드가 안전하다고 인식합니다. -// 예를 들어, 아래 코드는 오류가 발생합니다. - -myObject.x.y.z; - -// any를 사용하면 타입의 안전성을 희생하는 대신 -// 코드를 원래의 JavaScript에 더욱 가깝게 작성할 수 있습니다. - -// any는 어떤 타입(never를 제외하고)이든 -// 다른 타입에 할당할 수 있도록 만드는 -// '타입 와일드카드'와도 같습니다. - -declare function debug(value: any): void; - -debug("a string"); -debug(23); -debug({ color: "blue" }); - -// 인수의 타입을 모두 any로 대신할 수 있기 때문에 -// debug의 각 호출이 허용됩니다. - -// TypeScript는 any의 위치를 -// 다양한 형태에서 고려합니다. -// 함수 인수로 사용되는 아래의 튜플이 그 예시입니다. - -declare function swap(x: [number, string]): [string, number]; - -declare const pair: [any, any]; -swap(pair); - -// pair의 첫 번째 any를 number로 대체하고, -// 두 번째 `any`를 string으로 대체하면서 인자가 매칭되기 때문에 -// swap 호출이 가능합니다. - -// 튜플을 처음 봤다면, 다음을 참고하세요: example:tuples - -// unknown은 any의 자매 타입입니다. -// 만약 any가 "뭐가 최선인지 알겠어"와 같다면, -// unknown은 "뭐가 최선일지 모르니까, TS에 타입을 알려줘"와 같습니다. -// example:unknown-and-never diff --git a/packages/playground-examples/copy/ko/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ko/TypeScript/Primitives/Literals.ts deleted file mode 100644 index 112dae015178..000000000000 --- a/packages/playground-examples/copy/ko/TypeScript/Primitives/Literals.ts +++ /dev/null @@ -1,65 +0,0 @@ -// TypeScript는 소스 코드에서 리터럴을 위한 -// 재미있고 특별한 기능들이 있습니다. - -// 여기선, 타입 넓히기와 좁히기 ( example:type-widening-narrowing )가 -// 중점적으로 다뤄지고 있으므로 -// 그 부분을 먼저 살펴보도록 하곘습니다. - -// 리터럴은 collection 타입의 더욱 구체적인 하위 타입입니다. -// 이는 "Hello World"는 string이지만, -// 타입 시스템에서 string은 "Hello World"가 아니라는 것을 의미합니다. - -const helloWorld = "Hello World"; -let hiWorld = "Hi World"; // 이것은 let이기 때문에 string입니다. - -// 이 함수는 모든 string을 받습니다. -declare function allowsAnyString(arg: string); -allowsAnyString(helloWorld); -allowsAnyString(hiWorld); - -// 이 함수는 "Hello World" string 리터럴만을 받습니다. -declare function allowsOnlyHello(arg: "Hello World"); -allowsOnlyHello(helloWorld); -allowsOnlyHello(hiWorld); - -// 이를 통해 특정 리터럴만을 받기 위해 union을 사용하는 -// API를 선언할 수 있습니다. - -declare function allowsFirstFiveNumbers(arg: 1 | 2 | 3 | 4 | 5); -allowsFirstFiveNumbers(1); -allowsFirstFiveNumbers(10); - -let potentiallyAnyNumber = 3; -allowsFirstFiveNumbers(potentiallyAnyNumber); - -// 언뜻 보기에, 이 규칙은 복잡한 객체들에는 적용되지 않습니다. - -const myUser = { - name: "Sabrina", -}; - -// 상수로 선언되어 있음에도 불구하고 이것이 어떻게 -// `name: "Sabrina"`를 `name: string`으로 바꾸는지 보세요. -// 이는 여전히 이름이 언제든 바뀔 수 있기 때문입니다. - -myUser.name = "Cynthia"; - -// myUser의 name 프로퍼티가 바뀔 수 있기 때문에, -// TypeScript는 타입 시스템에서 리터럴 버전을 사용할 수 없습니다. -// 하지만 이것을 가능하게끔 해주는 기능이 있습니다. - -const myUnchangingUser = { - name: "Fatma", -} as const; - -// mutable object는 바뀔 수 있는 대신, -// 객체에 "as const"가 적용되면, -// object 리터럴이 되어 바뀌지 않습니다. - -myUnchangingUser.name = "Raîssa"; - -// "as const"는 고정된 데이터를 다루는 좋은 도구이며, -// 코드를 한 줄의 리터럴로 적게끔 해줍니다. -// 또한 "as const"는 배열에서도 동작합니다. - -const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; diff --git a/packages/playground-examples/copy/ko/TypeScript/Primitives/Unknown and Never.ts b/packages/playground-examples/copy/ko/TypeScript/Primitives/Unknown and Never.ts deleted file mode 100644 index b03c80ed5081..000000000000 --- a/packages/playground-examples/copy/ko/TypeScript/Primitives/Unknown and Never.ts +++ /dev/null @@ -1,128 +0,0 @@ -// Unknown - -// Unknown은 검색하면 -// 꽤 다양한 용도를 찾을 수 있는 타입 중 하나입니다. -// 이는 any 타입의 자매처럼 작동합니다. any가 모호함을 나타내는 반면 -// unknown은 세부사항을 필요로 합니다. - -// JSON 파서를 감싸는 것이 좋은 예시가 될 수 있습니다. -// JSON 데이터는 서로 다른 형식으로 제공되며, -// json 파싱 함수의 작성자는 데이터의 형식을 알 수 없습니다. -// 그 형식은 함수를 호출한 사람이 알고 있습니다. - -const jsonParser = (jsonString: string) => JSON.parse(jsonString); - -const myAccount = jsonParser(`{ "name": "Dorothea" }`); - -myAccount.name; -myAccount.email; - -// jsonParser에 마우스를 올리면, 반환 타입이 any이고 -// myAccount 또한 동일합니다. -// 이는 Generic을 이용하여 해결할 수 있지만 -// unknown으로 해결할 수도 있습니다. - -const jsonParserUnknown = (jsonString: string): unknown => JSON.parse(jsonString); - -const myOtherAccount = jsonParserUnknown(`{ "name": "Samuel" }`); - -myOtherAccount.name; - -// myOtherAccount 객체는 TypeScript에 타입이 선언되기 전까지 -// 사용될 수 없습니다. 이것은 API를 사용하는 사람이 -// 올바르게 타입을 정의하는지 생각하게끔 해 줍니다. - -type User = { name: string }; -const myUserAccount = jsonParserUnknown(`{ "name": "Samuel" }`) as User; -myUserAccount.name; - -// Unknown은 훌륭한 도구입니다. 더 자세히 알아보고 싶다면 다음 자료를 읽어보세요: -// https://mariusschulz.com/blog/the-unknown-type-in-typescript -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type - -// Never - -// TypeScript는 코드 흐름 분석을 지원하기 때문에, -// 코드가 논리적으로 발생할 수 없는 경우를 나타낼 수 있어야 합니다. -// 예를 들어, 아래 함수는 반환되지 않습니다: - -const neverReturns = () => { - // 첫 번째 줄에서 throw하는 경우 - throw new Error("Always throws, never returns"); -}; - -// 타입에 마우스를 올리면, 이것이 절대로 발생할 수 없다는 것을 의미하는 -// () => never 타입이라는 것을 알 수 있습니다. -// 이러한 값은 다른 값과 마찬가지로 여전히 전달될 수 있습니다. - -const myValue = neverReturns(); - -// 함수의 리턴값을 never로 작성하는 것은 -// JavaScript 런타임 시 예측 불가능하거나 -// API를 사용하는 사람이 type을 사용하지 않았을 때 유용합니다. - -const validateUser = (user: User) => { - if (user) { - return user.name !== "NaN"; - } - - // 타입 시스템에 따르면, 아래 코드는 절대 실행 될 수 없는데, - // 이는 neverReturns의 반환 타입에 해당합니다. - - return neverReturns(); -}; - -// 타입 정의는 user가 전달되어야 하지만 -// JavaScript에 이를 보장할 수 없는 -// 충분한 탈출구가 있음을 의미합니다. - -// never를 반환하는 함수를 사용하면 -// 불가능한 위치에 추가적인 코드를 사용하게끔 해 줍니다. -// 이는 더 나은 에러 메시지를 보여주거나 -// 파일 또는 반복문과 같은 자원을 닫는 데 유용합니다. - -// never는 주로 switch문이 완전하다는 것을 보장할 때 사용됩니다. -// E.g., 모든 경우가 다뤄짐을 의미합니다. - -// enum과 완전한 switch문이 있습니다. -// enum에 새 옵션(예를 들면 Tulip?)을 넣어보세요. - -enum Flower { - Rose, - Rhododendron, - Violet, - Daisy, -} - -const flowerLatinName = (flower: Flower) => { - switch (flower) { - case Flower.Rose: - return "Rosa rubiginosa"; - case Flower.Rhododendron: - return "Rhododendron ferrugineum"; - case Flower.Violet: - return "Viola reichenbachiana"; - case Flower.Daisy: - return "Bellis perennis"; - - default: - const _exhaustiveCheck: never = flower; - return _exhaustiveCheck; - } -}; - -// 새로운 꽃의 타입이 never로 변환될 수 없다는 -// 컴파일 에러가 발생할 것입니다. - -// 교차 타입에서의 Never - -// Never는 교차타입에서 -// 자동적으로 제거되는 타입입니다. - -type NeverIsRemoved = string | never | number; - -// NeverIsRemoved 타입을 보면, -// string | number인 것을 확인할 수 있습니다. -// never에는 할당할 수 없기 때문에 런타임에서는 절대 발생하지 않을 것이기 때문입니다. - -// 이 항목은 example:conditional-types에서 많이 사용됩니다. diff --git a/packages/playground-examples/copy/ko/sections.json b/packages/playground-examples/copy/ko/sections.json deleted file mode 100644 index 0c72f3f7bef0..000000000000 --- a/packages/playground-examples/copy/ko/sections.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "sections": [ - { - "name": "JavaScript", - "id": "JavaScript", - "subtitle": "TypeScript가 최소한의 추가 구문으로 JavaScript 작업을 어떻게 개선하는지 확인해보세요." - }, - { - "name": "TypeScript", - "id": "TypeScript", - "subtitle": "TypeScript가 JavaScript를 확장하여 안전성과 도구를 추가하는 방법을 살펴보세요." - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "릴리즈 노트를 확인해보세요." - }, - { - "name": "3.8", - "id": "3.8", - "subtitle": "릴리즈 노트를 확인해보세요." - }, - { - "name": "4.0", - "id": "4.0", - "subtitle": "릴리즈 노트를 확인해보세요." - }, - { - "name": "Playground V3", - "id": "Playground", - "subtitle": "이 웹사이트에서 변경된 사항을 확인해보세요." - } - ], - "sortedSubSections": [ - // JS - "JavaScript Essentials", - "Functions with JavaScript", - "Working With Classes", - "Modern JavaScript", - "External APIs", - "Helping with JavaScript", - // TS - "Primitives", - "Type Primitives", - "Meta-Types", - "Language", - "Language Extensions", - // Examples - "Syntax and Messaging", - "Types and Code Flow", - "Fixits", - // Playground - "Config", - "Tooling", - // 3.8 - "Breaking Changes", - "JSDoc Improvements", - // 4.0 - "New JS Features", - "New TS Features", - "New Checks" - ] -} diff --git a/packages/playground-examples/copy/pt/3-7/Fixits/Big number literals.ts b/packages/playground-examples/copy/pt/3-7/Fixits/Big number literals.ts deleted file mode 100644 index 9527f23e7287..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Fixits/Big number literals.ts +++ /dev/null @@ -1,39 +0,0 @@ -//// { compiler: { target: 99 }, order: 1 } - -// Você sabia que existe um limite para o maior -// número que você pode representar enquanto -// você está escrevendo em Javascript? - -const valorMaximo = 9007199254740991; -const valorMinimo = -9007199254740991; - -// Se você ultrapassar um ou mais desses números -// então você entrará em um território perigoso - -const umAcimaDoMaximo = 9007199254740992; -const umAbaixoDoMinimo = -9007199254740992; - -// A solução para lidar com números desse tamanho -// é converter esses números em BigInts ao invés -// de um número: -// -// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/BigInt - -// TypeScript fornecerá agora uma solução para os números -// literais que estão acima de 2 ^ 52 (positivo / negativo) -// adicionando o sufixo "n" que informa ao javascript -// que esse número deverá ser BigInt. - -// Números literiais -9007199254740993; --9007199254740993; -9007199254740994; --9007199254740994; - -// Números Hexadecimais -0x19999999999999; --0x19999999999999; -0x20000000000000; --0x20000000000000; -0x20000000000001; --0x20000000000001; diff --git a/packages/playground-examples/copy/pt/3-7/Fixits/Const to let.ts b/packages/playground-examples/copy/pt/3-7/Fixits/Const to let.ts deleted file mode 100644 index fcf5399a3576..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Fixits/Const to let.ts +++ /dev/null @@ -1,12 +0,0 @@ -//// { compiler: { }, order: 1 } - -// No 3.7, há a nova capacidade de converter rapidamente -// uma variável const para uma let quando o valor -// for reatribuído. - -// Você pode experimentar isso destacando o erro abaixo -// e optando por executar o _Quick Fix_ (Correção rápida). - -const nomeDeExibicao = "Andrew"; - -nomeDeExibicao = "Andrea"; diff --git a/packages/playground-examples/copy/pt/3-7/Fixits/Infer From Usage Changes.ts b/packages/playground-examples/copy/pt/3-7/Fixits/Infer From Usage Changes.ts deleted file mode 100644 index fff70641c097..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Fixits/Infer From Usage Changes.ts +++ /dev/null @@ -1,35 +0,0 @@ -//// { compiler: { noImplicitAny: false }, order: 2 } - -// Na versão 3.7 do TypeScript a correção 'dedução por uso' -// ficou mais inteligente. Ela agora poderá usar uma lista conhecida -// de tipos importantes (string, number, array, Promise) -// e deduzir se o uso do tipo combina com a API destes objetos. - -// Para o próximos pequenos exemplos, selecione o parâmetro das -// funções, clique na lâmpada e selecione _Infer parameter types from usage_ (Deduzir os tipos de parâmetros pelo uso) - -// Deduzir um array de números - -function pushNumber(arr) { - arr.push(12); -} - -// Deduzir uma Promise - -function awaitPromise(promise) { - promise.then(valor => console.log(valor)); -} - -// Deduzir uma função, e o que ela retornará: - -function inferAny(app) { - const result = app.use("oi"); - return result; -} - -// Deduzir um array de strings porquê uma -// string foi adicionada: - -function insertString(nomes) { - nomes[1] = "olá"; -} diff --git a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Flattened Error Reporting.ts b/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Flattened Error Reporting.ts deleted file mode 100644 index 9895d63e3631..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Flattened Error Reporting.ts +++ /dev/null @@ -1,65 +0,0 @@ -//// { compiler: { }, order: 3 } - -// Às vezes, as mensagens de erros no TypeScript pode ser um pouco verbosas... -// Com a versão 3.7, nós tratamos alguns casos que poderiam ser -// particularmente notórios. - -// Propriedades aninhadas - -let a = { b: { c: { d: { e: "string" } } } }; -let b = { b: { c: { d: { e: 12 } } } }; - -a = b; - -// Antes, isso levaria a duas linhas de código por propriedade aninhada. -// Isso rapidamente significou que as pessoas aprenderam a ler -// mensagens de erro lendo a primeira e última linha de mensagem -// de erro. - -// Agora eles estão alinhados. :tada: - -// Anteriormente no 3.6: -// -// Type '{ b: { c: { d: { e: number; }; }; }; }' is not assignable to type '{ b: { c: { d: { e: string; }; }; }; }'. -// Types of property 'b' are incompatible. -// Type '{ c: { d: { e: number; }; }; }' is not assignable to type '{ c: { d: { e: string; }; }; }'. -// Types of property 'c' are incompatible. -// Type '{ d: { e: number; }; }' is not assignable to type '{ d: { e: string; }; }'. -// Types of property 'd' are incompatible. -// Type '{ e: number; }' is not assignable to type '{ e: string; }'. -// Types of property 'e' are incompatible. -// Type 'number' is not assignable to type 'string' - -// Isso pode lidar com diferentes tipos de objetos, -// para fornecer uma mensagem de erro útil e coesa. - -class ExampleClass { - state = "ok"; -} - -class OtherClass { - state = 12; -} - -let x = { a: { b: { c: { d: { e: { f: ExampleClass } } } } } }; -let y = { a: { b: { c: { d: { e: { f: OtherClass } } } } } }; -x = y; - -// Anteriormente no 3.6: -// -// Type '{ a: { b: { c: { d: { e: { f: typeof OtherClass; }; }; }; }; }; }' is not assignable to type '{ a: { b: { c: { d: { e: { f: typeof ExampleClass; }; }; }; }; }; }'. -// Types of property 'a' are incompatible. -// Type '{ b: { c: { d: { e: { f: typeof OtherClass; }; }; }; }; }' is not assignable to type '{ b: { c: { d: { e: { f: typeof ExampleClass; }; }; }; }; }'. -// Types of property 'b' are incompatible. -// Type '{ c: { d: { e: { f: typeof OtherClass; }; }; }; }' is not assignable to type '{ c: { d: { e: { f: typeof ExampleClass; }; }; }; }'. -// Types of property 'c' are incompatible. -// Type '{ d: { e: { f: typeof OtherClass; }; }; }' is not assignable to type '{ d: { e: { f: typeof ExampleClass; }; }; }'. -// Types of property 'd' are incompatible. -// Type '{ e: { f: typeof OtherClass; }; }' is not assignable to type '{ e: { f: typeof ExampleClass; }; }'. -// Types of property 'e' are incompatible. -// Type '{ f: typeof OtherClass; }' is not assignable to type '{ f: typeof ExampleClass; }'. -// Types of property 'f' are incompatible. -// Type 'typeof OtherClass' is not assignable to type 'typeof ExampleClass'. -// Type 'OtherClass' is not assignable to type 'ExampleClass'. -// Types of property 'state' are incompatible. -// Type 'number' is not assignable to type 'string' diff --git a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Nullish Coalescing.ts b/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Nullish Coalescing.ts deleted file mode 100644 index 79d04d40816d..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Nullish Coalescing.ts +++ /dev/null @@ -1,42 +0,0 @@ -//// { compiler: { }, order: 2 } - -// O operador de coalescencia nula é uma alternativa ao || -// que retorna o lado direito da expressão se o lado esquerdo -// é nulo ou undefined (indefinido) - -// Em contraste, || usa a checagem falsy, significando que um texto vazio -// ou o número 0 seriam considerados falso. - -// Um bom exemplo para essa funcionalidade é lidar com -// objetos que tem padrões quando uma chave não é passada. - -interface ConfiguracaoDoApp { - // Padrão: "(sem nome)"; texto vazio é válido - nome: string; - - // Padrão: -1; 0 é válido - itens: number; - - // Padrão: verdadeiro - ativo: boolean; -} - -function updateApp(configuracao: Partial) { - // Com o operador null-coalescing - configuracao.nome = configuracao.nome ?? "(sem nome)"; - configuracao.itens = configuracao.itens ?? -1; - configuracao.ativo = configuracao.ativo ?? true; - - // Solução atual - configuracao.nome = typeof configuracao.nome === "string" ? configuracao.nome : "(sem nome)"; - configuracao.itens = typeof configuracao.itens === "number" ? configuracao.itens : -1; - configuracao.ativo = typeof configuracao.ativo === "boolean" ? configuracao.ativo : true; - - // Usando o operador || que poderia oferecer dados ruins - configuracao.nome = configuracao.nome || "(sem nome)"; // não permite a entrada de "" - configuracao.itens = configuracao.itens || -1; // não permite a entrada de 0 - configuracao.ativo = configuracao.ativo || true; // realmente ruim, sempre true (verdadeiro) -} -// Você pode ler mais sobre o operador nullish coalescing no post do blog do 3.7 -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Optional Chaining.ts b/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Optional Chaining.ts deleted file mode 100644 index 9c0c535b11a3..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Syntax and Messaging/Optional Chaining.ts +++ /dev/null @@ -1,71 +0,0 @@ -//// { compiler: { }, order: 1 } - -// O encadeamento opcional alcançou o consenso de estágio 3 no TC39 -// durante o desenvolvimento da versão 3.7. Encadeamento opcional -// permite você escrever um código que pode interromper imediatamente -// a execução de expressões quando atingir um valor null ou undefined. - -// Acesso à Propriedade - -// Vamos imaginar que temos um álbum onde o artista e a -// biografia do artista podem não estar presentes nos dados. -// Por exemplo, uma lista pode não ter um único artista. - -type AlbumAPIResponse = { - title: string; - artist?: { - name: string; - bio?: string; - previousAlbums?: string[]; - }; -}; - -declare const album: AlbumAPIResponse; - -// Com encadeamento opcional você pode escrever -// código como esse: - -const artistBio = album?.artist?.bio; - -// Ao invés desse: - -const maybeArtistBio = album.artist && album.artist.bio; - -// Nessa caso ?. age diferente que o && já que o && agirá -// diferente em valores falsy (ex.: uma string vazia, -// 0, NaN, e false). - -// Encadeamento opcional apenas considerá null ou -// undefined como sinal de parada e retornará um undefined. - -// Acesso a Elemento Opcional - -// Acesso à Propriedade é através do operador ., o encadeamento -// opcional também funciona com os operadores [] quando acessa -// elementos. - -const maybeArtistBioElement = album?.["artist"]?.["bio"]; - -const maybeFirstPreviousAlbum = album?.artist?.previousAlbums?.[0]; - -// Chamadas opcionais - -// Ao lidar com funções que podem ou não existir em tempo de execução, -// o encadeamento opcional suporta apenas a chamada de uma função -// se ela existir. Isso pode substituir o código onde você -// tradicionalmente escreveria algo como: if (func) func() - -// Por exemplo, aqui está uma chamada opcional para o callback -// de uma requisição API: - -const callUpdateMetadata = (metadata: any) => Promise.resolve(metadata); // Falsa chamada API - -const updateAlbumMetadata = async (metadata: any, callback?: () => void) => { - await callUpdateMetadata(metadata); - - callback?.(); -}; - -// Você pode ler mais sobre encadeamento opcional no post da versão 3.7 -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Assertion Functions.ts b/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Assertion Functions.ts deleted file mode 100644 index e1c3e05a287c..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Assertion Functions.ts +++ /dev/null @@ -1,70 +0,0 @@ -//// { compiler: { }, order: 1 } - -// Dada a flexibilidade do JavaScript, pode ser uma boa ideia -// adicionar verificações em tempo de execução ao seu código -// para validar suas suposições. - -// Normalmente são chamadas de asserções (ou invariantes) e -// são pequenas funções que geram erros no início, quando -// suas variáveis não correspondem ao que você espera. - -// O Node vem com uma função pronta para fazer isso, -// é chamada de assert e está disponível sem importação. - -// No entanto, vamos definir a nossa própria. Isso declara -// uma função que afirma que a expressão chamada value é -// verdadeira: -declare function assert(value: unknown): asserts value; - -// Agora vamos usá-la para validar o tipo de enum -declare const maybeStringOrNumber: string | number; -assert(typeof maybeStringOrNumber === "string"); - -// Com o TypeScript 3.7, a análise do fluxo de código pode -// usar esses tipos de funções para descobrir o que é o -// código. Então, quando você passa o mouse sobre a -// variável abaixo - você pode ver que ela foi reduzida -// de uma string ou número para apenas uma string. - -maybeStringOrNumber; - -// Você pode usar funções assert para garantir seus -// tipos em todo o código inferido, por exemplo, o -// TypeScript sabe que essa função retornará um número -// sem a necessidade de adicionar tipos ao parâmetro por -// meio da declaração de assert acima. - -function multiply(x: any, y: any) { - assert(typeof x === "number"); - assert(typeof y === "number"); - - return x * y; -} - -// As funções de asserção são irmãs das Type Guards -// example:type-guards com exceção de afetar o fluxo de -// controle quando ele continua através da função. - -// Por exemplo, podemos usar funções de asserção para -// restringir um enum ao longo do tempo: - -declare const oneOfFirstFiveNumbers: 1 | 2 | 3 | 4 | 5; - -declare function isOdd(param: unknown): asserts param is 1 | 3 | 5; -declare function isBelowFour(param: unknown): asserts param is 1 | 2 | 3 | 4; - -// Isso deve reduzir o enum para: 1 | 3 | 5 - -isOdd(oneOfFirstFiveNumbers); -oneOfFirstFiveNumbers; - -// Isso cortará os possíveis estados do enum para: 1 | 3 - -isBelowFour(oneOfFirstFiveNumbers); -oneOfFirstFiveNumbers; - -// Esta é uma introdução sobre alguns dos recursos das -// funções de asserção no TypeScript 3.7 - você pode -// descobrir mais lendo as notas de lançamento: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ diff --git a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Recursive Type References.ts b/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Recursive Type References.ts deleted file mode 100644 index d7fb844fbd72..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Recursive Type References.ts +++ /dev/null @@ -1,39 +0,0 @@ -//// { compiler: { }, order: 2 } - -// A escolha entre o uso de tipo x interface envolve as -// restrições nos recursos de cada um. Com o 3.7, uma das -// restrições no tipo, mas não na interface, foi removida. - -// Você pode descobrir mais sobre isso em example:types-vs-interfaces - -// Antes, você não podia se referir ao tipo que está definindo dentro -// do próprio tipo. Este era um limite que não existia dentro de uma -// interface e poderia ser contornado com um pouco de trabalho. - -// Por exemplo, isso não é possível em 3.6: -type ValueOrArray = T | Array>; - -// Uma implementação teria esta aparência, misturando o tipo -// com uma interface. -type ValueOrArray2 = T | ArrayOfValueOrArray; -interface ArrayOfValueOrArray extends Array> {} - -// Isso permite uma definição abrangente de JSON, que -// funciona referindo-se a si mesmo. - -type Json = string | number | boolean | null | Json[] | { [key: string]: Json }; - -const exampleStatusJSON: Json = { - available: true, - username: "Jean-loup", - room: { - name: "Highcrest", - // Não é possível adicionar funções ao tipo Json - // update: () => {} - }, -}; - -// Há mais para aprender com as notas de lançamento da versão 3.7 beta e seu PR: -// -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-7/ -// https://github.com/microsoft/TypeScript/pull/33050 diff --git a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Uncalled Function Checks.ts b/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Uncalled Function Checks.ts deleted file mode 100644 index ef0e90aaddac..000000000000 --- a/packages/playground-examples/copy/pt/3-7/Types and Code Flow/Uncalled Function Checks.ts +++ /dev/null @@ -1,41 +0,0 @@ -//// { compiler: { }, order: 1 } - -// Nova na versão 3.7, é uma verificação dentro de blocos 'if' -// para quando você acidentalmente usa uma função ao invés do valor -// de retorno da função. - -// Isto só é aplicado quando a função é conhecida para existir -// fazendo com que o bloco 'if' sempre seja verdadeiro. - -// Aqui está um exemplo de uma 'interface' onde existem -// 'callbacks' opcionais e não-opcionais. - -interface PluginSettings { - pluginShouldLoad?: () => void; - pluginIsActivated: () => void; -} - -declare const plugin: PluginSettings; - -// Por 'pluginShouldLoad' poder não existir, então -// é uma verificação legítima. - -if (plugin.pluginShouldLoad) { - // Faça alguma coisa quando 'pluginShouldLoad' existir. -} - -// Na versão 3.6 e anteriores, isto não era um erro. - -if (plugin.pluginIsActivated) { - // Quer fazer alguma coisa quando o plugin está ativado, - // mas ao invés de chamar o método, nós usamos isso como uma - // propriedade. -} - -// 'pluginIsActivated' sempre deve existir, mas o TypeScript -// ainda permite a verificação, porque o método é chamado -// dentro do bloco 'if'. - -if (plugin.pluginIsActivated) { - plugin.pluginIsActivated(); -} diff --git a/packages/playground-examples/copy/pt/3-8/Breaking Changes/Checking Unions with Index Signatures.ts b/packages/playground-examples/copy/pt/3-8/Breaking Changes/Checking Unions with Index Signatures.ts deleted file mode 100644 index f1b6163a0664..000000000000 --- a/packages/playground-examples/copy/pt/3-8/Breaking Changes/Checking Unions with Index Signatures.ts +++ /dev/null @@ -1,31 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// Nas versões anteriores do TypeScript, o verificador não valida -// se os campos não declarados em uma união de tipos estavam em -// conformidade com qualquer tipo indexado na união. - -// Você pode aprender mais sobre tipagens indexadas aqui: example:indexed-types - -// Por exemplo, o IdentifierCache abaixo indica que qualquer -// 'key' no objeto, será um número: - -type IdentifierCache = { [key: string]: number }; - -// Significa que isso irá falhar, porque 'file_a' é uma string. - -const cacheWithString: IdentifierCache = { file_a: "12343" }; - -// No entanto, quando você coloca isso em uma união, -// a verificação de validação não aconteceria - -let userCache: IdentifierCache | { index: number }; -userCache = { file_one: 5, file_two: "abc" }; - -// Isso foi corrigido e haveria um erro do compilador no 'file_two' - -// Isso também leva em consideração quando a key é de um tipo -// diferente, por exemplo: ([key: string] and [key: number]) - -type IdentifierResponseCache = { [key: number]: number }; - -let resultCache: IdentifierCache | IdentifierResponseCache; -resultCache = { file_one: "abc" }; diff --git a/packages/playground-examples/copy/pt/3-8/JSDoc Improvements/Accessibility Modifiers.js b/packages/playground-examples/copy/pt/3-8/JSDoc Improvements/Accessibility Modifiers.js deleted file mode 100644 index c05b55d28dd9..000000000000 --- a/packages/playground-examples/copy/pt/3-8/JSDoc Improvements/Accessibility Modifiers.js +++ /dev/null @@ -1,74 +0,0 @@ -//// { compiler: { ts: "3.8.3" }, isJavaScript: true } -// @ts-check - -// O JSDoc para TypeScript foi extendido para suportar -// os modificadores de acesso nas propriedades das classes. Aqui estão eles: -// -// @public - Padrão. É utilizado se não for definido um modificador. -// @private - O campo somente pode ser acessado na mesma classe onde foi definido. -// @protected - O campo é acessível para a classe onde foi definida e suas subclasses. -// - -// No exemplo temos a classe pai Animal, ela tem propriedades private e protected. -// Subclasses podem acessar "this.isRapido" mas não podem acessar "this.type" - -// Fora dessa classes, ambos os campos não são visíveis e retornam um erro do compilador quando -// @ts-check é ativado: - -class Animal { - constructor(tipo) { - /** @private */ - this.tipo = tipo; - /** @protected */ - this.isRapido = tipo === "leopardo"; - } - - fazerBarulho() { - // Supostamente são muito silenciosos - if (this.tipo === "tigre") { - console.log("tigre"); - } else { - throw new Error("fazerBarulho foi invocado na classe pai"); - } - } -} - -class Gato extends Animal { - constructor(tipo) { - super(tipo || "gato"); - } - - fazerBarulho() { - console.log("miau"); - } - - fugir() { - if (this.isRapido) { - console.log("Fugiu"); - } else { - console.log("Não conseguiu fugir"); - } - } -} - -class Leopardo extends Gato { - constructor() { - super("leopardo"); - } -} - -class Tigre extends Gato { - constructor() { - super("tigre"); - } -} - -const gato = new Gato(); -gato.fazerBarulho(); - -// Essas propriedades não são acessíveis -gato.type; -gato.isFast; - -// Você pode ler mais no post abaixo: -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#jsdoc-modifiers diff --git a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Export Modules From.ts b/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Export Modules From.ts deleted file mode 100644 index a809e23a178c..000000000000 --- a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Export Modules From.ts +++ /dev/null @@ -1,23 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// A habilidade do TypeScript de re-exportar ficou mais perto de suportar -// os casos adicionais disponíveis na ES2018. -// -// 'JavaScript exports' tem a habilidade de re-exportar -// elegantemente uma parte de uma dependência: - -export { ScriptTransformer } from "@jest/transform"; - -// Quando você quer exportar o objeto inteiro, isso -// fica um pouco mais verboso em versões anteriores do TypeScript: - -import * as console from "@jest/console"; -import * as reporters from "@jest/reporters"; - -export { console, reporters }; - -// Com a versão 3.8, o TypeScript suporta mais das formas -// de declaração de 'export', conforme as especificações do JavaScript, -// deixando você escrever uma única linha para re-exportar um módulo. - -export * as jestConsole from "@jest/console"; -export * as jestReporters from "@jest/reporters"; diff --git a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Private Class Fields.ts b/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Private Class Fields.ts deleted file mode 100644 index ed242de71a04..000000000000 --- a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Private Class Fields.ts +++ /dev/null @@ -1,70 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// A versão 3.8 adicionou os campos privados, que é uma maneira de declarar -// que um campo de uma classe é inacessível fora daquela classe, incluindo subclasses. - -// Por exemplo, a classe Pessoa abaixo não permite que ninguém usando uma -// instância da classe leia o primeiroNome, sobrenome, e o prefixo. - -class Pessoa { - #primeiroNome: string; - #sobrenome: string; - #prefixo: string; - - constructor(primeiroNome: string, sobrenome: string, prefixo: string) { - this.#primeiroNome = primeiroNome; - this.#sobrenome = sobrenome; - this.#prefixo = prefixo; - } - - cumprimentar() { - // Na Islândia é preferível que usemos o nome completo ao invés de [prefixo] [sobrenome] - // https://www.w3.org/International/questions/qa-personal-names#patronymic - if(navigator.languages[0] === "is") { - console.log(`Góðan dag, ${this.#primeiroNome} ${this.#sobrenome}`); - } else { - console.log(`Olá, ${this.#prefixo} ${this.#sobrenome}`); - } - } -} - -let jeremias = new Pessoa("Jeremias", "Beremias", "Sr."); - -// Você não pode acessar nenhum dos campos dessa classe de fora dela: - -// Por exemplo, isso não funciona: -console.log(jeremias.#primeiroNome); - -// Nem isso: -console.log("Sobrenome de Pessoas:", jeremias["#sobrenome"]); - -// Uma pergunta comum que fazemos é "Porque você usaria isso no lugar da -// palavra-chave 'private' dentro de uma classe?" - vamos fazer uma -// comparação sobre para ver como isso funciona após a 3.8: - -class Cachorro { - private _nome: string; - constructor(nome: string) { - this._nome = nome; - } -} - -let rex = new Cachorro("Rex"); -// Não permite que você acesse através da notação de ponto -rex._nome = "Caramelo"; -// Mas permite que seja acessado através da notação de colchetes. -rex["_nome"] = "Bidu"; - -// A referência de private no TypeScript só existe no nível de tipos, o que -// significa que você só pode confiar nisso. Agora com os campos -// privados fazendo parte da linguagem JavaScript, você pode então -// garantir de uma forma melhor a visibilidade no seu código. - -// Nós não planejamos descontinuar a palavra-chave `private` -// no TypeScript, então os seus códigos ja existentes vão continuar -// a funcionar, mas agora você pode escrever código de uma forma mais -// proxima da linguagem JavaScript. - -// Você pode aprender mais sobre campos de classes na proposta da tc39 -// https://github.com/tc39/proposal-class-fields/ -// e nas notas de lançamentos beta: -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#ecmascript-private-fields diff --git a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Type Imports.tsx b/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Type Imports.tsx deleted file mode 100644 index cfe2d71ea7bd..000000000000 --- a/packages/playground-examples/copy/pt/3-8/Syntax and Messaging/Type Imports.tsx +++ /dev/null @@ -1,50 +0,0 @@ -//// { compiler: { ts: "3.8.3" } } -// Na versão 3.8 nós adicionamos uma nova sintaxe para importar tipos, -// que seria similar para usuários que vieram do Flow. - -// 'import type' fornece uma maneira de declarar um tipo 'only import' -// que significa que você tem certeza que o código será apagado quando -// convertido para JavaScript de uma maneira bem previsível porque -// isso sempre será removido. - -// Por exemplo, esta linha nunca adicionará um 'import' ou 'require' na saída -import type { CSSProperties } from "react"; - -// Esse tipo é utilizado aqui -const style: CSSProperties = { - textAlign: "center", -}; - -// Isto está em contraste com este 'import': -import * as React from "react"; - -// Que será incluído no JavaScript -export class Welcome extends React.Component { - render() { - return ( -
-

Olá, mundo

-
- ); - } -} - -// Contudo, se utilizar o 'import' comum para importar apenas -// tipos, ele também pode ser removido. Se você olhar na -// saída compilada do JavaScript, este 'import' não está incluído. - -import { FunctionComponent } from "react"; - -export const BetaNotice: FunctionComponent = () => { - return

Esta página ainda está em beta

; -}; - -// Isto é chamado de 'import elision', e pode ser a fonte -// da confusão. A sintaxe 'import type' permite que você seja -// específico sobre o que você quer no JavaScript. - -// Esta é uma pequena visão geral para um dos principais casos de uso -// de 'import types' mas existem outros que você pode ler nas notas -// de lançamento da versão 3.8. - -// https://devblogs.microsoft.com/typescript/announcing-typescript-3-8-beta/#type-only-imports-exports diff --git a/packages/playground-examples/copy/pt/4-0/New Checks/Class Constructor Code Flow.ts b/packages/playground-examples/copy/pt/4-0/New Checks/Class Constructor Code Flow.ts deleted file mode 100644 index e080546dfcb2..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New Checks/Class Constructor Code Flow.ts +++ /dev/null @@ -1,21 +0,0 @@ -//// { compiler: { ts: "4.0.0-beta" } } -// - -// No 4.0 nós usamos um fluxo de análise para -// inferir o potencial tipo de propriedades de uma -// classe com base nos valores configurados -// durante sua construção - -class UserAccount { - id; // O tipo é inferido como string | número - constructor(isAdmin: boolean) { - if (isAdmin) { - this.id = "admin"; - } else { - this.id = 0; - } - } -} - -// Nas versões anteriores do TypeScript, `id` -// poderia ser classificado como `any` (qualquer) diff --git a/packages/playground-examples/copy/pt/4-0/New JS Features/JSDoc Deprecated.ts b/packages/playground-examples/copy/pt/4-0/New JS Features/JSDoc Deprecated.ts deleted file mode 100644 index 12e2c54246ed..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New JS Features/JSDoc Deprecated.ts +++ /dev/null @@ -1,21 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// Na versão 4.0 a tag JSDoc @deprecated foi adicionada ao -// sistema de tipos. Você pode usar @deprecated em qualquer -// lugar que usaria JSDoc atualmente. - -interface AccountInfo { - name: string; - gender: string; - - /** @deprecated use o campo de gênero no lugar */ - sex: "male" | "female"; -} - -declare const userInfo: AccountInfo; -userInfo.sex; - -// TypeScript irá oferecer um aviso não bloqueante quando -// uma propriedade descontinuada for acessada, e editores como -// vscode irão usar essa informação em lugares como o -// intellisense, outlines e no seu código. diff --git a/packages/playground-examples/copy/pt/4-0/New JS Features/Logical Operators and Assignment.ts b/packages/playground-examples/copy/pt/4-0/New JS Features/Logical Operators and Assignment.ts deleted file mode 100644 index 5006b4f59af6..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New JS Features/Logical Operators and Assignment.ts +++ /dev/null @@ -1,43 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// Logical Operators e Assignment são novas funcionalidades do -// JavaScript para 2020. Esses são um conjunto de operadores novos -// que editam um objeto JavaScript. - -// Seu objetivo é reutilizar o conceito de operadores -// matemáticos (Ex: += -= *=) porém usando lógica. - -interface User { - id?: number - name: string - location: { - postalCode?: string - } -} - -function updateUser(user: User) { - // Pode-se trocar esse código: - if (!user.id) user.id = 1 - - // Ou esse código: - user.id = user.id || 1 - - // Por esse código: - user.id ||= 1 -} - -// Esses conjuntos de operadores podem lidar com encadeamento profundo -// podendo poupar uma boa quantidade de código repetido. - -declare const user: User -user.location.postalCode ||= "90210" - -// São três novos operadores: -// -// ||= mostrado acima -// &&= que usa a lógica do 'and' ao invés da 'or' -// ??= que se baseia no example:nullish-coalescing para oferecer -// uma versão mais rigorosa do || que usa === no lugar. - -// Para mais informações da proposta, veja: -// https://github.com/tc39/proposal-logical-assignment diff --git a/packages/playground-examples/copy/pt/4-0/New JS Features/Nullish Coalescing.ts b/packages/playground-examples/copy/pt/4-0/New JS Features/Nullish Coalescing.ts deleted file mode 100644 index a4fb577ae910..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New JS Features/Nullish Coalescing.ts +++ /dev/null @@ -1,43 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } - -// # Nullish Coalescing -// -// Esse é o novo operador `??` com o intuito de ampliar -// o uso normal do `||` da mesma maneira que `===` amplia `==` -// para uma forma mais rígida de igualidade. -// -// Para entender, vamos ver como o || funciona: - -const response = { - nullValue: null, - headerText: "", - animationDuration: 0, - height: 400, - showSplashScreen: false, -} as const; - -const undefinedValue = response.undefinedValue || "some other default"; -// Seria: 'some other default' - -const nullValue = response.nullValue || "some other default"; - -// Esses dois exemplos funcionam de maneira similar na maioria -// das linguagens. A ferramenta || é muito boa em padronizar coisas -// mas as checagens de falsidade do Javascript podem te surpreender -// com alguns valores simples: - -// Potencialmente indesejado. '' é falsy, resultado: 'Hello, world!' -const headerText = response.headerText || "Hello, world!"; - -// Potencialmente indesejado. 0 é falsy, resultado: 300 -const animationDuration = response.animationDuration || 300; - -// Potencialmente indesejado. false é falsy, resultado: true -const showSplashScreen = response.showSplashScreen || true; - -// Alterando para usar ?? no lugar, então a igualdade === é usada -// para comparar ambos os lados: - -const emptyHeaderText = response.headerText ?? "Hello, world!"; -const zeroAnimationDuration = response.animationDuration ?? 300; -const skipSplashScreen = response.showSplashScreen ?? true; diff --git a/packages/playground-examples/copy/pt/4-0/New TS Features/Named Tuples.ts b/packages/playground-examples/copy/pt/4-0/New TS Features/Named Tuples.ts deleted file mode 100644 index b269b184c6bf..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New TS Features/Named Tuples.ts +++ /dev/null @@ -1,51 +0,0 @@ -//// { compiler: { ts: "4.0.0-beta" } } -// Tuplas são vetores que sua ordem é importante para a tipagem, -// você pode aprender mais sobre eles no exemplo:tuplas - -// No TypeScript 3.9, o tipo das uma tupla ganha a abilidade de dar -// nome para diferentes partes do array. - - -// Por Exemplo, você usou para escreve uma localização de Latitude, Longintude via tupla: - -type antigaLocalizacao = [number, number] - -const locations: antigaLocalizacao[] = [ - [40.7144, -74.006], - [53.6458, -1.785] -] - -// With 4.0, you can write: - -// Sabendo qual a Latitude e Longitude são ambiguas, então você -// saberá mais como terão que ser chamadas as tuplas LatLong. - -// Com o 4.0 você pode escrever: - -type NovaLocalizacao = [latitude: number, longitude: number] - -const novasLocalizacoes: NovaLocalizacao[] = [ - [52.3702, 4.8952], - [53.3498, -6.2603] -] - -// Os nomes agora mostram ao editor quando você passar o mouse -// por cima, o 0 e 1 no fim da próxima linha: -const primeiraLatitude = novasLocalizacoes[0][0] -const primeiraLogintude = novasLocalizacoes[0][1] - -// Isso poder parecer um pouco decepcionante, o objetivo -// principal é garantir que a informação não será perdida durante -// o trabalho com os sistemas de tipos. Por exemplo, quando extraido -// os parametros de uma função usando o Parâmetro tipo: - -function centroDoMapa(lng: number, lat: number) {} - -// No 4.0, são mantidos os lng e lat -type ParametrosDoCentroDoMapa = Parameters - -// Na versão 3.9, isso teria que ser feito assim -type AntigosParametrosDoCentroDoMapa = [number, number] - -// Fazendo com que uma manipulação de tipos mais complexa -// leve a perdas de informação diff --git a/packages/playground-examples/copy/pt/4-0/New TS Features/Unknown in Catch.ts b/packages/playground-examples/copy/pt/4-0/New TS Features/Unknown in Catch.ts deleted file mode 100644 index 0e57f8502075..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New TS Features/Unknown in Catch.ts +++ /dev/null @@ -1,39 +0,0 @@ -//// { compiler: { ts: "4.0.0-beta" } } - -// Como o Javascript permite o `throw` de qualquer valor, -// o TypeScript não permite a declaração um tipo de erro. - -try { - // .. -} catch (e) {} - -// Historicamente, isso significava que o `e` no catch -// poderia ter qualquer valor. Isso permitia liberdade para -// acesso arbitrário de qualquer propriedade. Com o 4.0, nós afrouxamos -// as restrições do tipo configurado no cláusula catch para permitir ambos -// `qualquer`(any) e `desconhecido` (unknown). - -// Mesmo comportamento com: -try { - // .. -} catch (e: any) { - e.stack; -} - -// Comportamento explícito com desconhecido: - -try { - // .. -} catch (e: unknown) { - - // Você não pode usar `e` até que o sistema - // de tipos aprenda o que é. Para mais informação - // a respeito, veja o exemplo: - // example:unknown-and-never - - e.stack; - - if (e instanceof SyntaxError) { - e.stack; - } -} diff --git a/packages/playground-examples/copy/pt/4-0/New TS Features/Variadic Tuples.ts b/packages/playground-examples/copy/pt/4-0/New TS Features/Variadic Tuples.ts deleted file mode 100644 index 6a408d087b13..000000000000 --- a/packages/playground-examples/copy/pt/4-0/New TS Features/Variadic Tuples.ts +++ /dev/null @@ -1,55 +0,0 @@ -//// { compiler: { ts: "4.0.2" } } -// Tuplas Variádicas dão às tuplas a abilidate de utilizar o operador rest (...) -// para passar tipos através do verificador de tipos de uma forma que funciona -// como generics. - -// Este é um tópico bastante avançado, então se você se sentir perdido não se preocupe. -// Baseia-se no example:generic-functions e example:tuples - -// Para começar, aqui está uma tupla variádica que sempre prefixa outra tupla -// com um número - -type AddMax = [max: number, ...rest: T]; -// ^ Generic usada para restringir o T -// ^ ... usado para indicar onde mesclar - -// Isso pode ser usado para composição: -type MaxMin = AddMax<[min: number]> -type MaxMinDiameter = AddMax<[min: number, diameter: number]> - -// O mesmo pode ser usado após a tupla: -type SuffixDIContext = [...first: T, context: any]; -type DIContainer = SuffixDIContext<[param: string]> - -// Este mecanismo pode ser combinado com múltiplos parâmetros de entrada. Por exemplo, -// esta função mescla dois arrays, mas usa '\0' como uma chave para indicar onde os arrays -// começam e terminam. -function joinWithNullTerminators(t: [...T], u: [...U]) { - return ['\0', ...t, '\0', ...u, '\0'] as const; -} - -// O TypeScript pode inferir o tipe de retorno de uma função dessa forma: -const result = joinWithNullTerminators(['variadic', 'types'], ["terminators", 3]); - -// Essas ferramentas tornam possível tipar corretamente uma função como curry, -// um conceito muito usado na programação funcional - -function curry(f: (...args: [...T, ...U]) => R, ...a: T) { - return (...b: U) => f(...a, ...b); -} - -// Há três argumentos generics -// - T: Os parâmetros que são um array de entradas para a função curry -// - U: Os parâmetros que _não_ são passados na função curry, e precisam ser aplicados à função de retorno -// - R: O tipo de retorno da função passada - -const sum = (left: number, right: number,) => left + right - -const a = curry(sum, 1, 2) -const b = curry(sum, 1)(2) -const c = curry(sum)(1, 2) - -// Você pode encontrar uma explicação mais detalhada, com mais exemplos de código em: -// https://github.com/microsoft/TypeScript/pull/39094 - - \ No newline at end of file diff --git a/packages/playground-examples/copy/pt/4-1/New JS Features/New JSX Support.ts b/packages/playground-examples/copy/pt/4-1/New JS Features/New JSX Support.ts deleted file mode 100644 index 0cb3bdb07bf7..000000000000 --- a/packages/playground-examples/copy/pt/4-1/New JS Features/New JSX Support.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { compiler: { ts: "4.1.0-dev.20201028", jsx: 4 } } - -// Na versão 17, o time React introduziu um novo formato -// para o Javascript emitido pelas transformações JSX. -// Você pode ver o código javascript no lado direito -// do playground na aba ".JS" -> - -import { useState } from "react"; - -export function ExampleApp() { - const [count, setCount] = useState(0); - - return ( -
-

You clicked {count} times

- -
- ); -} - -// Algumas das mudanças principais: -// -// - Use "import" para fornecer funções ao invés de um identificador React -// - Diferentes funções para um único elemento (jsx) vs múltiplos filhos (jsxs) -// - "Key" é separada das props -// -// Você pode ler o RFC que esta mudança implementa aqui: -// https://github.com/reactjs/rfcs/blob/createlement-rfc/text/0000-create-element-changes.md - -// A maioria dessas mudanças são por debaixo dos panos -// o que não deve afetar na forma como você escreve código JSX -// como um usuário final. diff --git a/packages/playground-examples/copy/pt/4-1/New JS Features/See in JSDoc.ts b/packages/playground-examples/copy/pt/4-1/New JS Features/See in JSDoc.ts deleted file mode 100644 index dc4f532cf0ed..000000000000 --- a/packages/playground-examples/copy/pt/4-1/New JS Features/See in JSDoc.ts +++ /dev/null @@ -1,21 +0,0 @@ -//// { compilador: { ts: "4.1.0-beta" } } - -// Na versão 4.1 o JSDoc parser no Typescript -// utilizado tanto em arquivos JavaScript quanto TypeScript -// suporta o parâmetro @see. - -// Você pode utilizar o @see para auxiliar as pessoas rapidamente -// acessar outro código relacionado clicando -// (cmd/ctrl + clique) ou passando o mouse sobre - -/** - * @see hello - */ -const adeus = "Ad"; - -/** - * Você diz O, eu digo lá - * - * @see adeus - * */ -const ola = "Olá, olá"; diff --git a/packages/playground-examples/copy/pt/4-1/Template Literals/Intro to Template Literals.ts b/packages/playground-examples/copy/pt/4-1/Template Literals/Intro to Template Literals.ts deleted file mode 100644 index 152b87c950d4..000000000000 --- a/packages/playground-examples/copy/pt/4-1/Template Literals/Intro to Template Literals.ts +++ /dev/null @@ -1,50 +0,0 @@ -//// { compilador: { ts: "4.1.0-dev.20201028" } } - -// O TypeScript já suporta o tratamento de um string/número exato -// como um literal, por exemplo esta função permite somente duas -// strings exatas e somente isto: - -declare function enableFeature(command: "redesign" | "newArtistPage"): void; -enableFeature("redesign"); -enableFeature(`newArtistPage`); -enableFeature("newPaymentSystem"); - -// Strings literais suportam a mesma forma como você escreve uma -// string no ES2020, com o TypeScript 4.1 estendemos o -// suporte a interpolação dentro de uma string literal. - -type Features = "Redesign" | "newArtistPage"; - -// Isto pega a união na variável Features acima, e transforma -// cada pedaço desta união para adicionar o trecho `-branch` depois da string -type FeatureBranch = `${Features}-branch`; - -// A 4.1 suporta um conjunto de palavras chave genéricas que -// você pode utilizar dentro de uma template literal para manipular strings. -// Estas são: Uppercase, Lowercase, Capitalize e Uncapitalize - -type FeatureID = `${Lowercase}-id`; -type FeatureEnvVar = `${ Uppercase} - ID`; - -// Strings em uniões são avaliados de forma cruzada, então se utilizado mais -// de um tipo de união cada membro de uma união é avaliado -// contra cada membro da outra união. - -type EnabledStates = "enabled" | "disabled"; -type FeatureUIStrings = `${ Features } is ${ EnabledStates }`; - -// Isto garante que qualquer combinação possível de cada -// união é considerada. - -// Este type pode então ser utilizado com uma assinatura indexada -// para rapidamente criar uma lista de chaves: - -type SetFeatures = { - [K in FeatureID]: boolean -}; - -// Continue aprendendo mais sobre template literals em -// mapped-types-with-template-literals - -// Ou leia o artigo em nosso blog: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types diff --git a/packages/playground-examples/copy/pt/4-1/Template Literals/Mapped Types with Template Literals.ts b/packages/playground-examples/copy/pt/4-1/Template Literals/Mapped Types with Template Literals.ts deleted file mode 100644 index 0e7053edec22..000000000000 --- a/packages/playground-examples/copy/pt/4-1/Template Literals/Mapped Types with Template Literals.ts +++ /dev/null @@ -1,53 +0,0 @@ -//// { compilador: { ts: "4.1.0-dev.20201028" } } - -// O TypeScript 4.1 adiciona suporte para as template literals, você pode -// aprender os conceitos básicos em intro-to-template-literals - -// A 4.1 introduz uma nova sintaxe dentro declaração mapeada de tipos, -// agora você pode utilizar "as `templated string`" que pode ser utilizado para transformar -// strings dentro de uma união. - -// Por exemplo, este tipo irá transformar todas as propriedades de um tipo existente -// em quatro funções que correspondem a chamadas REST tradicionais. - -// String literals template para descrever cada endpoint da API: -type GET = `get${Capitalize}` -type POST = `post${ Capitalize}` -type PUT = `put${ Capitalize}` -type DELETE = `delete${ Capitalize}` - -// Uma união dos tipos literais acima -type REST = GET | POST | PUT | DELETE - -// Pega um tipo, então para cada propriedade da string no tipo, mapeia -// esta chave para a REST acima, que criaria as quatro funções. - -type RESTify = { - [Key in keyof Type as REST]: () => Type[Key] -}; - -// A expressão `Key extends string ? Key : never` é necessária porque um objeto -// pode conter strings, números e símbolos como chaves. Podemos manipular somente -// os casos de chaves string aqui. - -// Agora temos uma lista de objetos disponíveis através da API: - -interface APIs { - artwork: { id: string, title: string}; - artist: { id: string, name: string}; - location: { id: string, address: string, country: string } -} - -// Entao quanto temos um objeto que usa estes tipos -declare const api: RESTify - -// Então todas estas funções são criadas automaticamente -api.getArtist() -api.postArtist() -api.putLocation() - -// Continue aprendendo mais sobre template literals em: -// string-manipulation-with-template-literals - -// Ou leia o artigo em nosso blog: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types diff --git a/packages/playground-examples/copy/pt/4-1/Template Literals/String Manipulation with Template Literals.ts b/packages/playground-examples/copy/pt/4-1/Template Literals/String Manipulation with Template Literals.ts deleted file mode 100644 index a2ed7a1ade68..000000000000 --- a/packages/playground-examples/copy/pt/4-1/Template Literals/String Manipulation with Template Literals.ts +++ /dev/null @@ -1,98 +0,0 @@ -//// { compilador: { ts: "4.1.0-dev.20201028" } } - -// Template literals podem ser utilizados para extrair e manipular tipos de strings literais. -// Estes tipos de string literal, por sua vez, podem ser usados como propriedades, e podem descrever -// possíveis transformações de uma string para um objeto em uma API. - -// ## Dividindo uma string para um Objeto - -// Template literals podem utilizar padrões como "pontos-de-divisão" para inferir as -// substrings necessárias. Por exemplo... - -// Este tipo é uma string literal que conforma com uma string padrão SemVer. -type TSVersion = "4.1.2" - -// Podemos criar um tipo para extrair os componentes desta string. -// Vamos dividir em dois caracteres '.'. -type ExtractSemver = - SemverString extends `${infer Major}.${ infer Minor }.${ infer Patch } ` ? - { major: Major, minor: Minor, patch: Patch } : { error: "Cannot parse semver string" } - -// A linha 1 deve lhe parecer familiar se você observou os exemplos anteriores: -// intro-to-template-literals / mapped-types-with-template-literals - -// A linha 2 é um tipo condicional, o TypeScript valida que o padrão de inferência combina -// com o parâmetro SemverString. - -// A linha3 é o resultado da condição, se verdadeiro então resulta em um objeto -// com as substrings informadas em diferentes posições em um objeto. Se a string -// não corresponder, então retorna o tipo com uma formatação de erro. - -type TS = ExtractSemver - -// Isto não representa um SemVer 100%, como no exemplo: -type BadSemverButOKString = ExtractSemver<"4.0.Four.4444"> - -// Entretanto, o ExtractSemver irá falhar em strings que não tiverem o formato correto. Este caso -// só irá funcionar quando a string tiver o formato "X.Y.Z", que na linha abaixo não tem: -type SemverError = ExtractSemver<"Four point Zero point Five"> - -// ## Divisão Recursiva de String - -// O exemplo anterior vai funcionar somente quando você tiver uma string exata para comparar, -// para os demais casos você deverá utilizar a feature do TypeScript 4.0: tuplas-variáveis. - -// Para dividir uma string em componentes reutilizáveis, Tuplas são uma boa maneira para manter -// o registro dos resultados. Aqui temos um tipo de Split: - -type Split = - string extends S ? string[] : - S extends '' ? [] : - S extends `${ infer T } ${ D } ${ infer U } ` ? [T, ...Split] : [S]; - -// A linha 1 declara dois parâmetros, iremos utilizar um único caractere por abreviação -// S representa a string por dividir, e D o delimitador. Esta -// linha garante que ambas são strings. - -// A linha 2 verifica se a string é literal, checando se uma string usual -// pode ser estendida de uma string de entrada. Caso sim, retorna um array de strings. Não -// podemos utilizar com strings não literais. - -// Por exemplo neste caso: -type S1 = Split - -// A linha 3 verifica se a string está vazia, Caso sim retorna uma tupla vazia -type S2 = Split<"", "."> - -// A linha 4 possui uma verificação similar a nossa ExtractSemver. Se a string combina com -// `[Prefix as T][Deliminator][Suffix as U]` então extrai o prefixo (T) no -// primeiro parâmetro da tupla, executa novamente a divisão no sufixo (U) para garantir -// que mais de uma combinação pode ser encontrada. -// -// Se a string não incluir um delimitador, então retorna uma tupla de comprimento 1 -// que contém a string passada como argumento (S). - -// Caso simples -type S3 = Split<"1.2", "."> - -// Irá executar recursivamente até ter todos os .'s divididos -type S4 = Split<"1.2.3", "."> - - -// Com este conhecimento, você deve ser capaz de ler e entender um pouco -// dos exemplos da comunidade sobre template literals, por exemplo: -// -// - Um extrator de rotas express por Dan Vanderkam -// https://twitter.com/danvdk/status/1301707026507198464 -// -// - Uma definição de document.querySelector por Mike Ryan -// https://twitter.com/mikeryandev/status/1308472279010025477 -// -// Algumas pessoas também expirementaram exemplos mais complexos de analisadores de strings -// utilizando string template literals, o que é interessante - mas não recomendado para -// códigos em ambientes de produção. -// -// https://github.com/ghoullier/awesome-template-literal-types -// -// Ou leia o artigo em nosso blog: -// https://devblogs.microsoft.com/typescript/announcing-typescript-4-1-beta/#template-literal-types diff --git a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Deno.ts b/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Deno.ts deleted file mode 100755 index fc45a58d22ca..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Deno.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { order: 3 } - -// Deno é um ambiente de execução JavaScript e TypeScript -// em desenvolvimento baseado no v8 com um foco em segurança. - -// https://deno.land - -// Deno tem um sistema de permissão maleável que reduz o acesso que -// o JavaScript tem ao sistema de arquivos ou rede e usa importações -// baseadas em http que são baixadas e armazenadas localmente - -// Aqui está um exemplo do uso do deno para criar scripts: - -import compose from "https://deno.land/x/denofun/lib/compose.ts"; - -function cumprimento(nome: string) { - return `Olá, ${nome}!`; -} - -function gritar(x: string) { - return x.toUpperCase(); -} - -const cumprimentarGritando = compose(gritar, cumprimento); - -// Imprime "OLÁ, MUNDO!." -cumprimentarGritando("mundo"); - -import concat from "https://deno.land/x/denofun/lib/concat.ts"; - -// Retorna "olámundo" -concat("olá", "mundo"); diff --git a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Node.js b/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Node.js deleted file mode 100755 index 7ddf39660172..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Node.js +++ /dev/null @@ -1,54 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// Node.js é um ambiente de execução muito popular baseado no v8, -// a engine JavaScript que da vida ao Chrome. Você pode usa-la -// para construir servers, clientes front-end e qualquer coisa que -// esteja entre os dois. - -// https://nodejs.org/ - -// Node.js vem com um grupo de bibliotecas base que estendem o -// ambiente de execução Javascript. -// Abrangendo desde tratamento de caminhos: - -import { join } from "path"; -const caminho = join("~", "downloads", "todo_list.json"); - -// a manipulação de arquivos: - -import { readFileSync } from "fs"; -const textoTodoList = readFileSync(caminho, "utf8"); - -// Você pode adicionar tipos de forma incremental ao seus projetos Javascript -// usando tipos no estilo JSDoc. Iremos fazer um para nossa lista de afazeres -// baseados na estrutura JSON: - -/** - * @typedef {Object} todo um item da lista - * @property {string} titulo O nome de exibição para o item da lista. - * @property {string} corpo A descrição do item da lista. - * @property {boolean} completo Se o item da lista está completo - */ - -// Agora atribuímos isso ao valor de retorno do JSON.parse -// para saber mais sobre isso, veja: exemplo:jsdoc-support - -/** @type {todo[]} uma lista de afazeres */ -const todoList = JSON.parse(textoTodoList); - -// E tratamento de processos: -import { spawnSync } from "child_process"; -todoList - .filter(todo => !todo.completo) - .forEach(todo => { - // Use o cliente ghi para criar uma issue para cada item - // da lista de afazeres que ainda não foram concluídos. - - // Note que você tem auto-complete e documentação - // no JS quando você destaca 'todo.titulo' abaixo. - spawnSync(`ghi open --message "${todo.titulo}\n${todo.corpo}"`); - }); - -// TypeScript tem definições de tipo atualizadas para todos os -// módulos embutidos via DefinitelyTyped - que significa que você -// pode escrever programas node com uma forte cobertura de tipos. diff --git a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with React.tsx b/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with React.tsx deleted file mode 100755 index 60cca03c7273..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with React.tsx +++ /dev/null @@ -1,128 +0,0 @@ -//// { order: 2, compiler: { jsx: 2, esModuleInterop: true } } - -//React é uma biblioteca muito popular para criar interfaces de usuário. -//Ela providencia uma abstração do Javascript ao criar visualização de componentes -//utilizando uma extensão da linguagem, chamada JSX. - -//TypeScript suporta JSX, e providencia um amplo conjunto de ferramentas de -//tipagem que modela ricamente como os componentes se conectam. - -//Para entender como o TypeScript funciona com os componentes do React -//podemos começar com exemplos genéricos: -// - -// - example:generic-functions -// - example:generic-classes - -//Primeiro veremos como interfaces genéricas podem ser usadas para -//mapear componentes do React. Este é um exemplo de componente funcional React: - -type FauxactFunctionComponent = - (props: Props, context?: any) => FauxactFunctionComponent | null | JSX.Element - -//Basicamente: -// -//FauxactFunctionComponent é uma função genérica que depende de outra -//tipagem, Props. Props necessita ser um Objeto (para garantir que não -//seja passado um valor primitivo) e a tipagem de Props será reutilizada -//como o primeiro argumento na função. - -//Para usá-la, é preciso a tipagem das props: - -interface DateProps { iso8601Date: string, message: string } - -//Podemos portanto criar um DateComponent que utiliza uma interface -//DateProps, e renderiza a data. - - -const DateComponent: FauxactFunctionComponent = - (props) => - -//Isto cria uma função que é genérica com uma variável Props que -//necessita ser um Objeto. A função componente retorna uma outra função -//componente ou um valor nulo. - -//O outro componente API é um baseado em Classe. Aqui está -//uma versão simplificada desta API: - -interface FauxactClassComponent { - props: Props - state: State - - setState: (prevState: State, props: Props) => Props - callback?: () => void - render(): FauxactClassComponent | null -} - -//Como esta classe pode conter tanto Props como State - ela possui -//dois argumentos genéricos que são utilizados por toda a classe. - -//A biblioteca React contém suas próprias definições de tipagem -//como estas, porém muito mais abrangentes. Vamos trazê-las para o -//playground e explorar alguns componentes. - -import * as React from 'react'; - -//Suas props são sua API pública, portanto vale a pena tomar tempo -//utilizando JSDoc para explicar como funciona: - -export interface Props { - /** O nome do usuário */ - name: string; - /** Renderiza o nome em negrito */ - priority?: boolean -} - -const PrintName: React.FC = (props) => { - return ( -
-

{props.name}

-
- ) -} - -//Você pode brincar com o uso do novo componente abaixo: - -const ShowUser: React.FC = (props) => { - return -} - -//TypeScript suporta o fornecimento de intellisense dentro do -//{} em um atributo - -let username = "Cersei" -const ShowStoredUser: React.FC = (props) => { - return -} - -//TypeScript também funciona com código React moderno. Aqui você -//pode ver que count e setCount foram induzidos corretamente a usar números -//com base no valor inicial passado para o useState. - -import { useState, useEffect } from 'react'; - -const CounterExample = () => { - const [count, setCount] = useState(0); - - useEffect(() => { - document.title = `You clicked ${count} times`; - }); - - return ( -
-

You clicked {count} times

- -
- ); -} -//React e TypeScript é um tópico gigantesco, mas os fundamentos são -//bem simples: TypeScript suporta JSX, e o restante é manipulado -//pelas tipagens do React no Definitely Typed. - -//Você pode aprender mais sobre o uso de React e TypeScript nos sites abaixo: -// -// https://github.com/typescript-cheatsheets/react-typescript-cheatsheet -// https://egghead.io/courses/use-typescript-to-develop-react-applications -// https://levelup.gitconnected.com/ultimate-react-component-patterns-with-typescript-2-8-82990c516935 diff --git a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Web.js b/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Web.js deleted file mode 100755 index 4021c4e9740c..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with Web.js +++ /dev/null @@ -1,79 +0,0 @@ -//// { order: 0, isJavaScript: true } - -// O DOM (Document Object Model) é a API essencial para -// trabalhar com uma página web, e o TypeSctipt tem -// um bom suporte para essa API. - -// Vamos criar um popover para ser exibido quando você pressionar "Executar" -// na barra de ferramentas no topo. - -const popover = document.createElement("div"); -popover.id = "popover-exemplo"; - -// Perceba que o popover está tipado corretamente para ser um HTMLDivElement -// especificamente porque passamos em uma "div". - -// Para tornar possível reexecutar esse código, vamos primeiro -// adicionar uma função para remover o popover se ele já estiver presente. - -const removePopover = () => { - const popoverExistente = document.getElementById(popover.id); - if (popoverExistente && popoverExistente.parentElement) { - popoverExistente.parentElement.removeChild(popoverExistente); - } -}; - -// Então chame em seguida. - -removePopover(); - -// Podemos definir os estilos em linha no elemento através da -// propriedade .style em um HTMLElement - isso é completamente tipado. - -popover.style.backgroundColor = "#0078D4"; -popover.style.color = "white"; -popover.style.border = "1px solid black"; -popover.style.position = "fixed"; -popover.style.bottom = "10px"; -popover.style.right = "20px"; -popover.style.width = "200px"; -popover.style.height = "100px"; -popover.style.padding = "10px"; - -// Incluindo atributos CSS mais obscuros,ou depreciados. -popover.style.webkitBorderRadius = "4px"; - -// Para adicionar conteúdo ao popover, precisamos incluir -// um elemento parágrafo e usá-lo para adicionar algum texto. - -const mensagem = document.createElement("p"); -mensagem.textContent = "Exemplo de popover"; - -// E também adicionaremos um botão de fechar. - -const botaoFechar = document.createElement("a"); -botaoFechar.textContent = "X"; -botaoFechar.style.position = "absolute"; -botaoFechar.style.top = "3px"; -botaoFechar.style.right = "8px"; -botaoFechar.style.color = "white"; - -botaoFechar.onclick = () => { - removePopover(); -}; - -// Então adicione todos esses elementos na página. -popover.appendChild(mensagem); -popover.appendChild(botaoFechar); -document.body.appendChild(popover); - -// Se você apertar "Run" acima, então o popup deve aparecer -// no canto inferior esquerdo, podendo ser fechado clicando -// no x no canto superior direito. - -// Esse exemplo demonstra como você pode trabalhar com a API do DOM -// no JavaScript - mas usando TypeScript para prover ótimo -// suporte ferramental. - -// Existe um exemplo estendido para o ferramental TypeScript com -// WebGL disponível aqui: example:typescript-with-webgl diff --git a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with WebGL.js b/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with WebGL.js deleted file mode 100755 index ddac1cfbac19..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/External APIs/TypeScript with WebGL.js +++ /dev/null @@ -1,280 +0,0 @@ -//// { order: 5, isJavaScript: true } - -// Esse exemplo cria um HTML canvas que faz uso do WebGL para -// renderizar confetes giratórios usando JavaScript. Iremos -// caminhar pelo código para entender como ele funciona, e -// ver como o ferramental do TypeScript fornece dicas úteis. - -// Esse exemplo compõe: example:working-with-the-dom - -// Primeiro, precisamos criar um elemento HTML canvas, feito -// pela API do DOM e definir alguns atributos de estilo em linha. - -const canvas = document.createElement("canvas") -canvas.id = "canvas-giratorio" -canvas.style.backgroundColor = "#0078D4" -canvas.style.position = "fixed" -canvas.style.bottom = "10px" -canvas.style.right = "20px" -canvas.style.width = "500px" -canvas.style.height = "400px" - -// Em seguida, para tornar mais fácil fazer alterações, nós removemos -// quaisquer versões antigas do canvas quando clicamos "Run" - e agora você pode -// fazer alterações e vê-las refletidas quando apertar "Run" -// ou (cmd + enter): - -const canvasExistente = document.getElementById(canvas.id) -if (canvasExistente && canvasExistente.parentElement) { - canvasExistente.parentElement.removeChild(canvasExistente) -} - -// Diga ao elemento canvas que iremos usar o WebGL para desenhar -// dentro do elemento (e não a ferramenta padrão de raster): - -const gl = canvas.getContext("webgl") - -// Em seguida precisamos criar sombreadores de vértices - eles são, -// a grosso modo, programas que aplicam matemática a um grupo de -// de arrays ou vértices de entrada (números). - -// Você pode ver o grande grupo de atributos no topo do sombreador, -// esses são passados para ao sombreador compilado no exemplo mais abaixo. - -// Existe uma visão geral boa de como eles funcionam aqui: -// https://webglfundamentals.org/webgl/lessons/webgl-how-it-works.html - -const sombreadorVertice = gl.createShader(gl.VERTEX_SHADER) -gl.shaderSource( - sombreadorVertice, - ` -precision lowp float; - -attribute vec2 a_position; // Flat square on XY plane -attribute float a_startAngle; -attribute float a_angularVelocity; -attribute float a_rotationAxisAngle; -attribute float a_particleDistance; -attribute float a_particleAngle; -attribute float a_particleY; -uniform float u_time; // Global state - -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - float angle = a_startAngle + a_angularVelocity * u_time; - float vertPosition = 1.1 - mod(u_time * .25 + a_particleY, 2.2); - float viewAngle = a_particleAngle + mod(u_time * .25, 6.28); - - mat4 vMatrix = mat4( - 1.3, 0.0, 0.0, 0.0, - 0.0, 1.3, 0.0, 0.0, - 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 0.0, 1.0 - ); - - mat4 shiftMatrix = mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - a_particleDistance * sin(viewAngle), vertPosition, a_particleDistance * cos(viewAngle), 1.0 - ); - - mat4 pMatrix = mat4( - cos(a_rotationAxisAngle), sin(a_rotationAxisAngle), 0.0, 0.0, - -sin(a_rotationAxisAngle), cos(a_rotationAxisAngle), 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0 - ) * mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, cos(angle), sin(angle), 0.0, - 0.0, -sin(angle), cos(angle), 0.0, - 0.0, 0.0, 0.0, 1.0 - ); - - gl_Position = vMatrix * shiftMatrix * pMatrix * vec4(a_position * 0.03, 0.0, 1.0); - vec4 normal = vec4(0.0, 0.0, 1.0, 0.0); - vec4 transformedNormal = normalize(pMatrix * normal); - - float dotNormal = abs(dot(normal.xyz, transformedNormal.xyz)); - float regularLighting = dotNormal / 2.0 + 0.5; - float glanceLighting = smoothstep(0.92, 0.98, dotNormal); - v_color = vec3( - mix((0.5 - transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting), - mix(0.5 * regularLighting, 1.0, glanceLighting), - mix((0.5 + transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting) - ); - - v_position = a_position; - v_overlight = 0.9 + glanceLighting * 0.1; -} -` -) -gl.compileShader(sombreadorVertice) - -// Esse exemplo também faz uso sombreadores em fragmento - um sombreador -// em fragmento é outro pequeno programa que passa por todo -// pixel presente no canvas e define sua cor. - -// Nesse caso, se brincar com os números você pode ver como -// isso afeta a iluminação na cena, tal como a espessura da -// da borda no confete: - -const sombreadorFragmentos = gl.createShader(gl.FRAGMENT_SHADER) -gl.shaderSource( - sombreadorFragmentos, - ` -precision lowp float; -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - gl_FragColor = vec4(v_color, 1.0 - smoothstep(0.8, v_overlight, length(v_position))); -} -` -) -gl.compileShader(sombreadorFragmentos) - -// Recebe o sombreador compilado e o adiciona ao contexto -// WebGL do canvas para que possa ser usado: - -const sombreador = gl.createProgram() -gl.attachShader(sombreador, sombreadorVertice) -gl.attachShader(sombreador, sombreadorFragmentos) -gl.linkProgram(sombreador) -gl.useProgram(sombreador) - -gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()) - -// Precisamos obter/definir as variáveis de entrada para o sombreador de -// uma maneira segura para memória, para que a ordem e o comprimento de seus -// valores precisam ser armazenados. - -const attrs = [ - { name: "a_position", length: 2, offset: 0 }, // ex: x e y representam 2 espaços na memória - { name: "a_startAngle", length: 1, offset: 2 }, // mas o ângulo, apenas 1 valor - { name: "a_angularVelocity", length: 1, offset: 3 }, - { name: "a_rotationAxisAngle", length: 1, offset: 4 }, - { name: "a_particleDistance", length: 1, offset: 5 }, - { name: "a_particleAngle", length: 1, offset: 6 }, - { name: "a_particleY", length: 1, offset: 7 } -] - -const STRIDE = Object.keys(attrs).length + 1 - -// Itere sobre nossos atributos conhecidos e crie ponteiros na memória para que o lado JS -// possa ser capaz de preencher o sombreador. - -// Para compreender essa API um pouco: WebGL é baseada no OpenGL -// que é uma 'API baseada em uma máquina de estados'. Você passa comandos em uma -// ordem em particular para renderizar coisas na tela. - -// Então, o uso desejado é geralmente não passar objetos para cada chamada -// API WebGL, mas passar uma coisa para uma função, então passar outra -// para a próxima. Então, aqui otimizamos o WebGL para criar um array de -// vértices ponteiro. - -for (var i = 0; i < attrs.length; i++) { - const name = attrs[i].name - const length = attrs[i].length - const offset = attrs[i].offset - const attribLocation = gl.getAttribLocation(shaderProgram, name) - gl.vertexAttribPointer(attribLocation, length, gl.FLOAT, false, STRIDE * 4, offset * 4) - gl.enableVertexAttribArray(attribLocation) -} - -// Então nessa linha eles são ligados a um array em memória: - -gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()) - -// Define algumas constantes para renderização: - -const NUM_PARTICLES = 200 -const NUM_VERTICES = 4 - -// Tente reduzi-las e clicar em "Run" de novo, -// elas representam quantos pontos deveriam existir em -// cada confete e ter um número ímpar -// tira tudo dos eixos. - -const NUM_INDICES = 6 - -// Cria os arrays de entradas para os sombreadores de vértices. -const vertices = new Float32Array(NUM_PARTICLES * STRIDE * NUM_VERTICES) -const indices = new Uint16Array(NUM_PARTICLES * NUM_INDICES) - -for (let i = 0; i < NUM_PARTICLES; i++) { - const axisAngle = Math.random() * Math.PI * 2 - const startAngle = Math.random() * Math.PI * 2 - const groupPtr = i * STRIDE * NUM_VERTICES - - const particleDistance = Math.sqrt(Math.random()) - const particleAngle = Math.random() * Math.PI * 2 - const particleY = Math.random() * 2.2 - const angularVelocity = Math.random() * 2 + 1 - - for (let j = 0; j < 4; j++) { - const vertexPtr = groupPtr + j * STRIDE - vertices[vertexPtr + 2] = startAngle // Angulo inicial - vertices[vertexPtr + 3] = angularVelocity // Velocidade angular - vertices[vertexPtr + 4] = axisAngle // Diferença de ângulo - vertices[vertexPtr + 5] = particleDistance // Distancia de partículas indo de (0,0,0) - vertices[vertexPtr + 6] = particleAngle // Angulo em volta do eixo Y - vertices[vertexPtr + 7] = particleY // Angulo em volta do eixo y - } - - // Coordenadas - vertices[groupPtr] = vertices[groupPtr + STRIDE * 2] = -1 - vertices[groupPtr + STRIDE] = vertices[groupPtr + STRIDE * 3] = +1 - vertices[groupPtr + 1] = vertices[groupPtr + STRIDE + 1] = -1 - vertices[groupPtr + STRIDE * 2 + 1] = vertices[groupPtr + STRIDE * 3 + 1] = +1 - - const indicesPtr = i * NUM_INDICES - const vertexPtr = i * NUM_VERTICES - indices[indicesPtr] = vertexPtr - indices[indicesPtr + 4] = indices[indicesPtr + 1] = vertexPtr + 1 - indices[indicesPtr + 3] = indices[indicesPtr + 2] = vertexPtr + 2 - indices[indicesPtr + 5] = vertexPtr + 3 -} - -// Passando o conteúdo para o contexto do WebGL -gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) -gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - - -const timeUniformLocation = gl.getUniformLocation(shaderProgram, "u_time") -const startTime = (window.performance || Date).now() - -// Inicia a cor do fundo como preto. -gl.clearColor(0, 0, 0, 1) - -// Permite canais alfa no sombreador de vértices. -gl.enable(gl.BLEND) -gl.blendFunc(gl.SRC_ALPHA, gl.ONE) - -// Define o contexto do WebGL para ter o tamanho total do canvas -gl.viewport(0, 0, canvas.width, canvas.height) - - // Cria um loop de execução para desenhar todos os confetes - ; (function frame() { - gl.uniform1f(timeUniformLocation, ((window.performance || Date).now() - startTime) / 1000) - - gl.clear(gl.COLOR_BUFFER_BIT) - gl.drawElements( - gl.TRIANGLES, - NUM_INDICES * NUM_PARTICLES, - gl.UNSIGNED_SHORT, - 0 - ) - requestAnimationFrame(frame) - })() - -// Adiciona o novo elemento canvas no canto inferior esquerdo -// do playground -document.body.appendChild(canvas) - -// Creditos: baseado nesse JSFiddle por Subzey -// https://jsfiddle.net/subzey/52sowezj/ diff --git a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Function Chaining.ts b/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Function Chaining.ts deleted file mode 100644 index d8cd067e61f7..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Function Chaining.ts +++ /dev/null @@ -1,77 +0,0 @@ -//// { order: 2, compiler: { esModuleInterop: true } } - -// Encadeamento de funções é um padrão comum em JavaScript que pode fazer seu -// código mais legível e com menos valores intermediários, mais fácil de ler -// devido a suas qualidades de aninhamento - -// JQuery é uma API comum que funciona via encadeamento. -// Aqui está um exemplo de JQuery sendo usada com os tipos -// a partir de DefinitelyTyped - -import $ from "jquery"; - -// Aqui está um exemplo de uso da API do jQuery - -$("#navigation").css("background", "red").height(300).fadeIn(200); - -// Se você adicionar um ponto na linha acima, você verá -// uma lista longa de funções. Esse padrão é facil de reproduzir -// em JavaScript. A chave é certificar que você sempre tem o -// mesmo objeto como retorno. - -// Aqui está um exemplo de uma API que cria um API encadeada. -// A chave é ter uma função externa que acompanha o estado interno -// e um objeto que expõe a API que é sempre retornada. - -const addTwoNumbers = (start = 1) => { - let n = start; - - const api = { - // Implemente cada função na sua API - add(inc: number = 1) { - n += inc; - return api; - }, - - print() { - console.log(n); - return api; - }, - }; - return api; -}; - -// O que permite o mesmo estilo de API como vimos no jQuery - -addTwoNumbers(1).add(3).add().print().add(1); - -// Aqui um exemplo similar que usa uma classe. - -class AddNumbers { - private n: number; - - constructor(start = 0) { - this.n = start; - } - - public add(inc = 1) { - this.n = this.n + inc; - return this; - } - - public print() { - console.log(this.n); - return this; - } -} - -// Aqui o exemplo em ação. - -new AddNumbers(2).add(3).add().print().add(1); - -// Esse exemplo usou a inferência de tipos do TypeScrypt -// para fornecer uma maneira de prover ferramental para padrões JavaScript. - -// Para mais exemplo disso: -// -// - example:code-flow diff --git a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Generic Functions.ts b/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Generic Functions.ts deleted file mode 100644 index c635aaf2b37b..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Generic Functions.ts +++ /dev/null @@ -1,100 +0,0 @@ -// Tipos genéricos permitem usar Tipos como variáveis em outros tipos. -// Meta - -// Tentaremos manter este exemplo leve. Você pode fazer -// muita coisa com tipos genéricos e é provável que veja algum código bem -// complicado usando tipos genéricos em algum ponto - mas isso -// não significa que tipos genéricos são complicados. - -// Vamos começar com um exemplo onde envolveremos um objeto de entrada -// em um array. Só vamos nos importar com uma variável neste caso: -// o tipo que foi passado como argumento: - -function envolverEmArray(entrada: Tipo): Tipo[] { - return [entrada]; -} - -// Nota: é comum ver Tipo ser referido como T. Isso é -// culturalmente similar a como as pessoas usam i em um loop for -// para representar índice. T normalmente representa Tipo (Type), então -// usaremos o nome completo para maior clareza - -// Nossa função usará inferência para sempre manter o tipo -// passado como argumento igual ao tipo retornado (porém -// envolvido em um array) - -const stringArray = envolverEmArray("hello generics"); -const numberArray = envolverEmArray(123); - -// Podemos verificar que isso funciona como esperado ao checar -// se podemos atribuir um array de strings a uma função que -// deveria ser um array de objetos -const naoArrayDeStrings: string[] = envolverEmArray({}); - -// Você também pode evitar a inferência adicionando -// o tipo você mesmo: -const arrayDeStrings2 = envolverEmArray(""); - -// envolverEmArray permite que qualquer tipo seja usado, porém existem -// casos onde você precisa permitir apenas um subconjunto de tipos. -// Nesses casos você pode dizer que o tipo deve estender um -// tipo específico. - -interface Desenhavel { - desenhar: () => void; -} - -// Esta função recebe um conjunto de objetos que possuem uma função -// para desenhar na tela -function renderizarNaTela(entrada: Tipo[]) { - entrada.forEach(i => i.desenhar()); -} - -const objetosComDesenhar = [{ desenhar: () => {} }, { desenhar: () => {} }]; -renderizarNaTela(objetosComDesenhar); - -// Isso falhará se desenhar não estiver presente: - -renderizarNaTela([{}, { desenhar: () => {} }]); - -// Tipos genéricos podem começar a parecer complicados quando você tem -// múltiplas variáveis. Aqui está um exemplo de uma função de caching -// que permite que você tenha diferentes conjuntos de tipos de entrada -// e caches. - -interface HostDeCache { - salvar: (a: any) => void; -} - -function adicionarObjetoAoCache(obj: Tipo, cache: Cache): Cache { - cache.salvar(obj); - return cache; -} - -// Este é o mesmo exemplo que acima, porém com um parâmetro extra. -// Nota: para fazê-lo funcionar, porém, tivemos que usar any. Isso -// pode ser resolvido usando uma interface genérica - -interface HostDeCacheGenerico { - salvar: (a: TipoDeConteudo) => void; -} - -// Agora quando o HostDeCacheGenerico é usado, você deve dizer -// a dele qual é o TipoDeConteudo - -function adicionarObjetoTipadoAoCache>(obj: Tipo, cache: Cache): Cache { - cache.salvar(obj); - return cache; -} - -// O exemplo acima é bem intenso em termos de sintaxe. Porém, -// isso provê uma segurança maior. Essas são escolhas que -// agora você tem conhecimento para fazer. Quando for prover APIs -// a outras pessoas, tipos genéricos oferecem um jeito flexível de permitir -// que elas usem seus próprios tipos sem ter que inferir seu código por completo. - -// Para mais exemplos de tipos genéricos com classes e interfaces: -// -// example:advanced-classes -// example:typescript-with-react -// https://www.typescriptlang.org/docs/handbook/generics.html diff --git a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Typing Functions.ts b/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Typing Functions.ts deleted file mode 100644 index ff0cd80b8ae9..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Functions with JavaScript/Typing Functions.ts +++ /dev/null @@ -1,137 +0,0 @@ -// Você pode chegar bem longe usando a inferência do TypeScript, -// porém existem muitas outras maneiras de prover um modo mais -// rico para documentar a forma das suas funções. - -// Uma boa primeira opção é observar os parâmetros opcionais, -// que é uma forma de deixar os outros saberem que alguns -// parâmetros podem ser pulados. - -let i = 0; -const incrementarIndice = (valor?: number) => { - i += valor === undefined ? 1 : valor; -}; - -// Esta função pode ser invocada das seguintes maneiras: - -incrementarIndice(); -incrementarIndice(0); -incrementarIndice(3); - -// Você pode tipar parâmetros como funções, que provêm -// inferência de tipos quando escrever estas funções. - -const callbackComIndice = (callback: (i: number) => void) => { - callback(i); -}; - -// Embutir interfaces de funções pode dificultar um pouco a leitura -// com todas essas setas. Usar um apelido para o tipo permitirá -// que você nomeie a função passada como parâmetro. - -type CallbackComNumero = (i: number) => void; -const callbackComIndice2 = (callback: CallbackComNumero) => { - callback(i); -}; - -// Esta função pode ser invocada da seguinte maneira: - -callbackComIndice2(indice => { - console.log(indice); -}); - -// Se passar o cursor sobre o índice acima, você verá como o TypeScript -// inferiu corretamente que o índice deveria ser um número. - -// A inferência do TypeScript também pode funcionar quando passamos uma -// função como uma referência de instância. Para demonstrar, usaremos -// uma função que transforma um número em uma string: - -const numeroParaString = (n: number) => { - return n.toString(); -}; - -// Isso pode ser utilizado em uma função como map em um array -// para converter todos os números em strings. Se passar o cursor -// sobre numerosComoString abaixo, você verá os tipos esperados. -const numerosComoString = [1, 4, 6, 10].map(i => numeroParaString(i)); - -// Podemos usar uma abreviação para passar a função diretamente -// e termos o mesmo resultado com um código mais focado: -const numerosComoStringConciso = [1, 4, 6, 10].map(numeroParaString); - -// Você pode ter funções que aceitam muitos tipos -// mas estar somente interessado em algumas propriedades. -// Esse é um caso útil para assinaturas indexadas em tipos. -// O seguinte tipo declara que nesta função é OK usar qualquer objeto, -// contanto que ele inclua a propriedade nome: - -interface QualquerObjetoDeveTerNome { - nome: string; - [chave: string]: any; -} - -const apresentaNomeFormatado = (entrada: QualquerObjetoDeveTerNome) => {}; - -apresentaNomeFormatado({ nome: "joey" }); -apresentaNomeFormatado({ nome: "joey", age: 23 }); - -// Se quiser aprender mais sobre assinaturas indexadas -// nós recomendamos: -// -// https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks -// https://basarat.gitbooks.io/typescript/docs/types/index-signatures.html - -// Você também pode permitir este tipo de comportamento em qualquer lugar -// usando a flag suppressExcessPropertyErrors do arquivo tsconfig - -// porém, você não tem como saber se quem estiver usando sua API -// têm esta configuração desligada. - -// Funções em JavaScript podem aceitar diferentes conjuntos de parâmetros. -// Existem dois padrões comuns para descrevê-los: union types (união de tipagens) -// para parâmetros/retorno, e function overloads (sobrecarga de funções). - -// Usar union types nos seus parâmetros faz sentido se existirem -// apenas uma ou duas mudanças e a documentação não precisar ser -// modificada entre essas funções. - -const FuncaoBoolOuNumber = (input: boolean | number) => {}; - -FuncaoBoolOuNumber(true); -FuncaoBoolOuNumber(23); - -// Function overloads, por outro lado, oferecem uma sintaxe -// bem mais rica para parâmetros e tipos de retorno. - -interface FuncaoBoolOuNumberOuString { - /** Recebe um boolean, retorna um boolean */ - (entrada: boolean): boolean; - /** Recebe um número, retorna um número */ - (entrada: number): number; - /** Recebe uma string, retorna um boolean */ - (entrada: string): boolean; -} - -// Se esta for a primeira vez que esteja vendo a expressão declare, -// ela permite que você diga ao TypeScript que algo existe, mesmo -// que não esteja presente em runtime neste arquivo. Isso é útil para -// mapear código com side-effects mas extremamente útil para demos, onde -// implementar algo poderia ser bem custoso. - -declare const funcaoBoolOuNumberOuString: FuncaoBoolOuNumberOuString; - -const valorBool = funcaoBoolOuNumberOuString(true); -const valorNumero = funcaoBoolOuNumberOuString(12); -const valorBool2 = funcaoBoolOuNumberOuString("string"); - -// Se passar o cursor sobre os valores e funções acima -// você verá a documentação e valores retornados corretos. - -// Você pode chegar bem longe usando function overloads, porém -// existe uma outra ferramenta para lidar com diferentes tipos -// de valores de entrada e retorno: tipos genéricos. - -// Tipos genéricos provêm uma forma de você ter tipos como variáveis -// substituíveis em definições de tipo. - -// example:generic-functions -// example:function-chaining diff --git a/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Errors.ts b/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Errors.ts deleted file mode 100644 index aa4262e02b71..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Errors.ts +++ /dev/null @@ -1,39 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// Por padrão o TypeScript não fornece mensagens -// de erro dentro do JavaScript. Em vez disso o ferramental -// é focado em prover um suporte avançado para editores. - -// Ativar os erros entretanto, é muito fácil. Em um -// arquivo JS comum, tudo o que é necessário para ativar as -// mensagens de erro do TypeScript é adicionar o seguinte comentário: - -// @ts-check - -let myString = "123"; -myString = {}; - -// Isso pode começar a adicionar vários rabiscos vermelhos -// dentro do seu arquivo JS. Ainda que continue funcionando -// dentro do JavaScript, você tem algumas ferramentas para -// corrigir esses erros. - -// Para alguns do erros, onde você não sente que mudanças -// no código devem ocorrer, você pode usar as anotações JSDoc -// para dizer ao TypeScript quais devem ser os tipos: - -/** @type {string | {}} */ -let myStringOrObject = "123"; -myStringOrObject = {}; - -// Você pode ler mais aqui: example:jsdoc-support - -// Você pode declarar a falha sem importância, dizendo -// ao TypeScript para ignorar o próximo erro: - -let myIgnoredError = "123"; -// @ts-ignore -myStringOrObject = {}; - -// Você pode usar inferência de tipo através do fluxo de código -// para realizar mudanças no seu JavaSript: example:code-flow \ No newline at end of file diff --git a/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Quick Fixes.ts b/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Quick Fixes.ts deleted file mode 100644 index 06b3027eb44f..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Helping with JavaScript/Quick Fixes.ts +++ /dev/null @@ -1,15 +0,0 @@ -// O Typescript fornece recomendações rápidas para problemas comuns. -// Os comandos aparecem no seu editor com base nas recomendações. - -// Por exemplo, o TypeScript pode fornecer -// recomendações rápidas para seus erros de digitação: - -const eulersNumber = 2.7182818284; -eulersNumber.toStrang(); -// ^______^ - selecione isso para ver a lâmpada - -class ExampleClass { - method() { - this.notDeclared = 10; - } -} diff --git a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Code Flow.ts b/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Code Flow.ts deleted file mode 100644 index 74b86851c92f..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Code Flow.ts +++ /dev/null @@ -1,63 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -//Como o fluxo de código dentro de nossos arquivos JavaScript podem afetar -//a tipagem ao longo de nosso programa. - -const users = [{ name: "Ahmed" }, { name: "Gemma" }, { name: "Jon" }]; - -//Iremos verificar se encontramos um usuário com nome "jon". -const jon = users.find((u) => u.name === "jon"); - -//No caso acima, o método 'find' pode falhar. Neste caso, -//não temos um objeto. Isto cria a tipagem: -// -// { name: string } | undefined -// -//Se você passar o mouse por cima dos três casos de uso de 'jon' abaixo, -//você verá que a tipagem muda dependendo de onde a palavra está alocada: - -if (jon) { - jon; -} else { - jon; -} - -//O tipo '{ name: string } | undefined' usa uma ferramenta do TypeScript -//chamado de union types (união de tipagens). Uma union type é uma forma -//de declarar que um objeto pode ser uma de muitas coisas. -// -//O pipe (barra vertical) atua como um separador entre duas diferentes tipagens. -//A natureza dinâmica do JavaScript permite que muitas funções -//recebam e retornem objetos de tipagens não-relacionadas e nós -//precisamos ser capazes de expressar com quais podemos estar lidando. - -//Nós podemos usar isso em várias formas. Vamos começar observando -//um array cujos valores são de tipagens diferentes. - -const identifiers = ["Hello", "World", 24, 19]; - -//Nós podemos usar a sintaxe JavaScript 'typeof x === y' para a verificação -//da tipagem do primeiro elemento. Você pode passar o mouse sobre a palavra -//'randomIdentifier' abaixo e ver como ela muda conforme suas -//diferentes localizações. - -const randomIdentifier = identifiers[0]; -if (typeof randomIdentifier === "number") { - randomIdentifier; -} else { - randomIdentifier; -} - -//Essa análise do controle de fluxo significa que nós podemos escrever -//Javascript puro e o TypeScript tentará entender como a tipagem do código -//mudará em diferentes localizações. - -//Para entender mais sobre a análise do fluxo de código: -// - example:type-guards - -//Para continuar lendo os exemplos você poderá pular para os seguintes -//tópicos agora: -// -// - Modern JavaScript: example:immutability -// - Type Guards: example:type-guards -// - Functional Programming with JavaScript example:function-chaining diff --git a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Functions.ts b/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Functions.ts deleted file mode 100644 index 666f9120eaca..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Functions.ts +++ /dev/null @@ -1,87 +0,0 @@ -//// { order: 2, compiler: { noImplicitAny: false } } - -//Existem várias maneiras de declarar uma função em JavaScript. -//Vejamos uma função que adiciona dois números: - -//Crie uma função de escopo global chamado addOldSchool -function addOldSchool(x, y) { - return x + y; -} - -//Você pode mover o nome da função para uma variável também -const anonymousOldSchoolFunction = function (x, y) { - return x + y; -}; - -//Você pode também usar a forma abreviada de uma Arrow Function -const addFunction = (x, y) => { - return x + y; -}; - -//Nós iremos focar na última forma, porém tudo se aplica para -//os três formatos - -//TypeScript fornece uma sintaxe adicional para a -//definição da função e dá dicas de quais tipagens são -//esperadas por essa função -// -//A seguir temos uma versão simples da função de adicionar, -//a qual recebe dois parametros de qualquer tipagem (any): -//poderiam ser passadas strings, números ou objetos. - -const add1 = (x: any, y: any) => { - return x + y; -}; -add1("Hello", 23); - -//Isso é legítimo em JavaScript (strings podem ser -//adicionados como esse exemplo), porém não é o ideal para -//nossa função, que sabemos que é para números, portanto -//iremos converter os parametros x e y para receberem somente números. - -const add2 = (x: number, y: number) => { - return x + y; -}; -add2(16, 23); -add2("Hello", 23); - -//Ótimo. Nós receberemos um erro quando algo que não seja um número -//for passado. Se você passar o mouse sbre a palavra add2 acima, verá -//que o TypeScript os descreve como: -// -// const add2: (x: number, y: number) => number -// -//Onde foi deduzido que, quando os dois parametros são números, -//o único tipo de retorno possível é um número. -//Isso é ótimo, você não precisa escrever sintaxe extra. -//Vejamos o que é preciso para fazer isso: - -const add3 = (x: number, y: number): string => { - return x + y; -}; - -//Essa função falha porque informamos ao TypeScript -//que ela deveria retornar uma string, mas a função -//não cumpriu com o esperado. - -const add4 = (x: number, y: number): number => { - return x + y; -}; - -//Isso é uma versão mais explícita de add2 - Existem casos -//em que você talvez queira usar uma sintaxe explícita do tipo -//de retorno para dar espaço para trabalhar antes de começar. -//Um pouco como o desenvolvimento orientado a testes (TDD) recomenda -//começar com um teste com falha, mas nesse caso, é com o formato -//de uma função com falha. - -//Este exemplo é apenas uma introdução, você pode aprender muito mais -//como as funções funcionam no TypeScript no manual e na -//seção de exemplos de JavaScript Funcional: -// -// https://www.typescriptlang.org/docs/handbook/functions.html -// example:function-chaining - -//E para continuar nosso tour pelos fundamentos do JavaScript, -//veremos como o fluxo de código afeta a tipagem do TypeScript: -//example:code-flow diff --git a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Hello World.ts b/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Hello World.ts deleted file mode 100644 index 0ab8adee1761..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Hello World.ts +++ /dev/null @@ -1,34 +0,0 @@ -//// { order: 0, compiler: { target: 1 } } - -//Bem-vindo ao playground do TypeScript. Este site é como -//executar um projeto TypeScript dentro do navegador da web. - -//O playground facilita você experimentar com segurança -//suas idéias com TypeScript, tornando trivial o compartilhamento -//desses projetos. Tudo que é necessário para o carregamento do -//projeto para que outros possam vê-lo é a URL desta página. - -const hello = "Hello"; - -//Você pode ver à direita o resultado da compilação do TypeScript: -//isso é JavaScript puro que pode ser executado em navegadores, -//servidores ou em qualquer lugar na verdade. - -const world = "World"; - -//Você pode ver como ele faz pequenas alterações no código, -//como converter uma "const" para uma "var". Essa é uma das -//muitas coisas que o TypeScript faz para possibilitar a sua -//execução em qualquer lugar onde o JavaScript é executado. - -console.log(hello + " " + world); - -//Agora que você tem uma idea de como o playground funciona, -//vejamos como o TypeScript torna o trabalho com o JavaScript mais -//divertido. Durante essa seção nós tentaremos manter o mais próximo -//do JavaScript puro possível, para mostrar como você reutilizar o -//conhecimento existente. -// -//Clique abaixo para continuar: -// -// example:objects-and-arrays diff --git a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Objects and Arrays.ts b/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Objects and Arrays.ts deleted file mode 100644 index 5c2594e55e6f..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/JavaScript Essentials/Objects and Arrays.ts +++ /dev/null @@ -1,110 +0,0 @@ -//// { order: 1, compiler: { strict: false } } - -//Objetos em JavaScript são coleções de valores agrupados -//com chaves nomeadas. - -const userAccount = { - name: "Kieron", - id: 0, -}; - -//Você pode combiná-las para tornar os modelos de dados maiores -//e mais complexos. - -const pie = { - type: "Apple", -}; - -const purchaseOrder = { - owner: userAccount, - item: pie, -}; - -//Se você passar o mouse sobre algumas dessas palavras -//(tente purchaseOrder acima) você poderá ver como o -//TypeScript interpreta o JavaScript com rótulos de tipagem. - -//Os valores podem ser acessados por meio de ".", para -//obter um nome de usuário para um pedido de compra. -console.log(purchaseOrder.item.type); - -//Se você passar o mouse por cima de cada parte do código -//entre os ()s, você poderá ver o TypeScript oferecendo mais -//informações sobre cada parte. Tente reescrever isso baixo: - -//Copie isso na próxima linha, caractere por caractere: -// -// purchaseOrder.item.type - -//TypeScript fornece feedback para o playground -//sobre quais objetos do JavaScript estão disponíveis neste -//arquivo e permite você evitar erros de digitação e ver -//informações adicionais sem precisar procurar em outro local - -//TypeScript também oferece esses mesmos recursos para arrays. -//Aqui temos um array com apenas nossos pedidos de compra acima. - -const allOrders = [purchaseOrder]; - -//Se você passar o mouse por cima de allOrders, você poderá -//afirmar que é um array, porque as informações passadas pelo -//cursor terminam com um []. Você pode acessar o primeiro pedido -//usando colchetes com um índice (começando do zero). - -const firstOrder = allOrders[0]; -console.log(firstOrder.item.type); - -//Uma maneira alternativa para obter um objeto é por meio do -//uso do método pop() no array para remover objetos. Fazer -//isso remove o objeto do array e retorna o objeto. -//Isso é chamado de mutação do array, pois alteara os dados -//subjacentes de seu interior. - -const poppedFirstOrder = allOrders.pop(); - -//Agora 'allOrders' está vazio. Dados mutantes podem ser úteis para -//muitas coisas, mas uma forma de reduzir a complexidade em seu -//código-base é evitar a mutação. Para isso, o TypeScript oferece -//uma forma de declarar um array para somente leitura: - -//Cria uma tipagem baseada no formato de 'purchaseOrder': -type PurchaseOrder = typeof purchaseOrder; - -//Cria um array de readonly (somente-leitura) de pedidos de compra -const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder]; - -//Sim! Há um pouco mais de código, com certeza. Existem quatro -//coisas novas aqui: -// -// type PurchaseOrder - Declara uma nova tipagem para o TypeScript. -// -// typeof - Usa o sistema de dedução de tipos para definir a tipagem -// baseada na 'const' que é passada em seguida. -// -// purchaseOrder - Obtem a variável purchaseOrder e informa ao -// TypeScript que este é o formato de todos -// os objetos no array de pedidos. -// -// readonly - Este objeto não permite mutação, uma vez criado, -// o conteúdo do array sempre permanecerá o mesmo. -// -// -//Agora, se você tentar utilizar o método pop() do array readonlyOrders, -//o TypeScript gerará um erro. - -readonlyOrders.pop(); - -//Você pode usar o readonly em todos os tipos -//de lugares. É um pouco de sintaxe extra aqui e ali, -//mas fornece muito mais segurança. - -//Você pode encontrar mais sobre o readonly aqui: -// - https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties -// - https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html - -//E você pode continuar aprendendo sobre JavaScript e TypeScript -//no exemplo de funções: -// example:functions -// -// Ou se desejar saber mais sobre imutabilidade: -// example:immutability diff --git a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Async Await.ts b/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Async Await.ts deleted file mode 100644 index 7e5a30ddf495..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Async Await.ts +++ /dev/null @@ -1,109 +0,0 @@ -//// { order: 1, target: "es5" } - -// O JavaScript moderno adicionou um modo de lidar com callbacks -// de uma maneira elegante adicionando uma API baseada em Promises -// a qual tem uma sintaxe especial que te permite tratar -// código assíncrono como se fosse síncrono. - -// Assim como todos os recursos da linguagem, isso é uma troca em -// complexidade: fazer uma função assíncrona significa que o valor de -// retorno está envolvido em Promises. O que costumava retornar uma -// string, agora retorn uma Promise. - -const funcao = () => ":onda:"; -const funcaoAsync = async () => ":onda:"; - -const minhaString = funcao(); -const minhaPromiseString = funcaoAsync(); - -minhaString.length; - -// minhaPromiseString é uma Promise, não uma string: - -minhaPromiseString.length; - -// Você pode usar a palavra chave await para converter uma promise -// ao seu valor. Atualmente, isso funciona apenas dentro de uma -// função assíncrona. - -const minhaFuncao = async () => { - const minhaString = funcao(); - const minhaPromiseResolvidaEmString = await funcaoAsync(); - - // Com a palavra chave await, agora minha minhaPromiseResolvidaEmString - // é uma string - minhaString.length; - minhaPromiseResolvidaEmString.length; -}; - -// Códigos rodando em await podem lançar erros, -// e é importante pegar esses erros em algum lugar. - -const minhaFuncaoLancando = async () => { - throw new Error("Não chame isso"); -}; - -// Podemos envolver a chamada de uma função assíncrona em um try catch -// para lidar com casos onde a função age inexperadamente. - -const funcaoAssincronaPegando = async () => { - const meuValorDeRetorno = "Olá mundo"; - try { - await minhaFuncaoLancando(); - } catch (erro) { - console.error("minhaFuncaoLancando falhou", erro); - } - return meuValorDeRetorno; -}; - -// Devido à ergonomia dessa API estar retornando um -// único valor, ou lançando, você deve considerar -// oferecer informação sobre o resultado dentro do valor -// retornado e usar o throw apenas quando algo -// realmente excepcional ocorreu. - -const funcaoExemploRaizQuadrada = async (input: any) => { - if (isNaN(input)) { - throw new Error("Apenas números são aceitos"); - } - - if (input < 0) { - return { sucesso: false, mensagem: "Não existe raiz quadrada de número negativo" }; - } else { - return { sucesso: true, valor: Math.sqrt(input) }; - } -}; - -// Então a função consumidora pode checar a resposta e -// descobrir o que fazer com o valor retornado. Por enquanto -// este é um exemplo trivial, assim que você começar a trabalhar -// com códigos de rede, essa sintaxe extra valerá a pena. - -const checarRaizQuadrada = async (valor: number) => { - const resposta = await funcaoExemploRaizQuadrada(valor); - if (resposta.sucesso) { - resposta.valor; - } -}; - -// Async/Await pega um código parecido com esse: - -// pegarResposta(url, resposta => { -// pegarResposta(resposta.url, (segundaResposta) => { -// const dadosDaResposta = segundaResposta.data -// pegarResposta(dadosDaResposta.url, (terceiraResposta) => { -// ... -// }) -// }) -// }) - -// E deixa se tornar linear como: - -// const resposta = await pegarResposta(url) -// const segundaResposta = await pegarResposta(reposta.url) -// const dadosDaResposta = segundaResposta.data -// const terceiraResposta = await pegarResposta(dadosDaResposta.url) -// ... - -// O qual pode fazer o código ficar mais perto do canto esquerdo -// e ser lido com um ritmo consistente. diff --git a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Immutability.ts b/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Immutability.ts deleted file mode 100644 index 8171db55b4ea..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Immutability.ts +++ /dev/null @@ -1,57 +0,0 @@ -// O JavaScript é uma linguagem que possui algumas maneiras de -// declarar que alguns de seus objetos não mudam. -// O mais proeminente é const - que diz que o valor não mudará. - -const olaMundo = "Olá Mundo"; - -// Você não pode mudar olaMundo agora, o TypeScript -// te dará um erro, porque você teria um erro em -// tempo de execução. - -olaMundo = "Oi mundo"; - -// Por que se importar com imutabilidade? Muito disso -// é sobre reduzir a complexidade no seu código. -// Se você pode reduzir o número de coisas que podem mudar, -// então existem menos coisas para se manter o controle. - -// Usar const é um bom começo, de qualquer maneira isso -// falha um pouco quando usamos objetos. - -const meuObjetoConstate = { - mensagem: "Olá Mundo", -}; - -// meuObjetoConstante não é constante o suficiente, -// porque nós ainda podemos fazer mudanças de partes do objeto, -// por exemplo, podemos mudar a mensagem: - -meuObjetoConstate.mensagem = "Oi Mundo"; - -// const significa que o valor naquele ponto se mantém o mesmo, -// mas o objeto em si pode mudar internamente. Isso pode ser -// mudado utilizando o Object.freeze. - -const meuObjetoDefinitivamenteConstante = Object.freeze({ - mensagem: "Olá Mundo", -}); - -// Quando um objeto é congelado, você não pode mudá-lo -// internamente. O TypeScript te dará erros nesses casos: - -meuObjetoDefinitivamenteConstante.mensagem = "Oi mundo"; - -// Funciona igualmente com arrays: - -const meuArrayCongelado = Object.freeze(["Oi"]); -meuArrayCongelado.push("Mundo"); - -// Usar o freeze significa que você pode confiar que o -// objeto se permanece o mesmo por baixo dos panos. - -// O TypeScript tem alguns ganchos de sintaxe para melhorar o -// trabalho com dados imutáveis que pode ser encontrado -// na seção de exemplos do TypeScript: -// -// example:literals -// example:type-widening-and-narrowing diff --git a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Import Export.ts b/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Import Export.ts deleted file mode 100644 index 4013637a2f8d..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/Import Export.ts +++ /dev/null @@ -1,108 +0,0 @@ -//// { order: 1, target: "ES5" } - -// O JavaScript adicionou import/export à linguagem em 2016 -// e TypeScript tem suporte completo para esse estilo de -// conexão entre arquivos e entre modulos externos. -// O TypeScript expande essa sintaxe ao permitir que tipos -// sejam importados e exportados junto com o código. - -// Vamos ver o import de código de um módulo. - -import { danger, message, warn, DangerDSLType } from "danger"; - -// Aqui importamos um conjunto de import nomeados -// ("named imports") de um módulo do Node chamado danger. -// Apesar de haver mais do que quatro imports, -// esses são os únicos que nós escolhemos importar. - -// Nomeando especificamente quais imports você precisa, -// permite que ferramentas tenham a habilidade de remover -// código não utilizado em seu applicativo, e ajuda você a -// entender o que está sendo utilizado nessa arquivo em particular. - -// Nesse caso: danger, message e warn são imports de JavaScript -// enquanto que DangerDSLType é uma interface. - -// O TypeScript permite que engenheiros documentem seus códigos usando -// JSDoc, e a documentação é importada também. Por exemplo, se você -// passar o mouse sobre diferentes partes abaixo, você verá -// explicações sobre o que elas são. - -danger.git.modified_files; - -// Se você quiser saber como criar essas anotações de documentação -// leia o exemplo:jsdoc-support - -// Outro modo de importar código é através do export -// padrão de um módulo. Um exemplo disso é o módulo debug, o qual -// expõe uma função que cria uma função de log. - -import debug from "debug"; -const log = debug("playground"); -log("Código começou a rodar"); - -// Por conta das exports padrões ("default exports") não terem um nome, -// elas podem ser delicadas de se trabalhar junto com ferramentas de análise estática -// como o suporte a refactoração em TypeScript, mas elas têm o seu próprio uso. - -// Por haver uma longa história sobre import/export de código -// em JavaScript, existe uma parte confusa sobre o export padrão: -// alguns módulos exportados tem documentação que sugere que você possa -// escrever um import como este: - -import req from "request"; - -// Entretanto, isto apresenta uma erro. E então você encontra no -// Stack Overflow uma recomendação de import como esta: - -import * as req from "request"; - -// E este funciona. Por que? Nós vamos voltar a isso no final -// da nossa sessão sobre export. - -// Para realizar um import, você precisa fazer um export. -// O modo moderno de escrever exports é através da palavra-chave export - -/** O número atual de adesivos que sobraram no rolo */ -export const numeroDeAdesivos = 11; - -// Isso poderia ter sido importado em outro arquivo usando: -// -// import { numeroDeAdesivos } from "./caminho/para/o/arquivo" - -// Vocé pode ter tantas importações em um arquivo quantas forem necessárias. -// Já um export padrão é bem parecido com isso. - -/** Cria um adesivo para você */ -const geradorDeAdesivos = () => {}; -export default geradorDeAdesivos; - -// Isto poderia ser importado em outro arquivo usando: -// -// import pegueAdesivos from "./caminho/para/o/arquivo" -// -// O nome é decidido pelo módulo que está realizando o import. - -// Estes não são os únicos tipos de import, apenas os -// mais comuns em código moderno. Há um tópico bem abrangente -// sobre todos os modos que um código pode cruzar as fronteiras -// de um módulo no manual: -// -// https://www.typescriptlang.org/docs/handbook/modules.html - -// Entretanto, para tentar responder a última questão. Se você -// observar o código JavaScript desse exemplo, você verá isto: - -// var geradorDeAdesivos = function () { }; -// exports.default = geradorDeAdesivos; - -// Isso define a propriedade padrão ("default") no objeto exports como -// geradorDeAdesivos. Existe código que define o exports como uma -// função ao invés de um objeto. -// -// O TypeScript optou por utilizar a especificação ECMAScript -// sobre como lidar com esses casos, que é criar um erro. -// Entretanto, existe uma configuração do compilador que lida -// automaticamente com esses casos para você, que é a esModuleInterop. -// -// Se você ativar ela nesse exemplo, você verá que o erro desaparece. diff --git a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/JSDoc Support.js b/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/JSDoc Support.js deleted file mode 100644 index 5105538e1943..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Modern JavaScript/JSDoc Support.js +++ /dev/null @@ -1,94 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// O TypeScript tem um suporte muito rico ao JSDoc, para muitos casos -// você pode até não utilizar arquivos .ts e apenas usar anotações de JSDoc -// para criar um ambiente de desenvolvimento rico. -// -// Um comentário JSDoc é um comentário de múltiplas linhas que -// começam com dois asteriscos ao invés de um. - -/* Este é um comentário normal */ -/** Este é um comentário JSDoc */ - -// Comentários JSDoc pertencem ao código JavaScript mais -// próximo abaixo dele - -const minhaVariavel = "Oi"; - -// Se você passar o mouse sobre minhaVariavel, você pode ver que -// ela tem o texto do comentário JSDoc acima. - -// Comentários JSDoc são um meio de fornecer para o TypeScript e editores -// informação sobre os tipos utilizados. Vamos começar com um fácil, -// definindo o tipo de uma variável como um tipo nativo. - -// Para todos os exemplos, você pode passar o mouse sobre o nome. -// E na próxima linha tente escrever [exemplo] para ver -// as opções de auto-complete. - -/** @type {number} */ -var meuNumero; - -// Você pode ver todas as tags disponíveis no manual: -// -// https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc - -// Entretanto, nós vamos tentar cobrir alguns exemplos a mais aqui. -// Você também pode copiar e colar aqui quaisquer exemplos do manual. - -// Importando tipos para arquivos de configuração em JavaScript. - -/** @type { import("webpack").Config } */ -const config = {}; - -// Criando um tipo complexo para reutilizar em múltiplos lugares: - -/** - * @typedef {Object} Usuario - a conta de um usuario - * @property {string} nome - o nome de usuario - * @property {number} id - um id único - */ - -// Então use-o através do nome do typedef: - -/** @type { Usuario } */ -const usuario = {}; - -// Existe em TypeScript uma definição de tipo em linha ("inline type shorthand") que é equivalente -// e a qual você pode usar para ambos: o type e o typedef. - -/** @type {{ dono: Usuario, nome: string }} */ -const recurso; - -/** @typedef {{dono: Usuario, nome: string}} Recurso */ - -/** @type {Recurso} */ -const outroRecurso; - - -// Declarando uma função com tipos: - -/** - * Adiciona dois números - * @param {number} a O primeiro número - * @param {number} b O segundo número - * @returns {number} - */ -function adicionaDoisNumeros(a, b) { - return a + b; -} - -// Você pode usar a maioria das ferramentas de tipos do TypeScript, como uniões ("unions"): - -/** @type {(string | boolean)} */ -let stringOuBoolean = ""; -stringOuBoolean = false; - -// Estender globais em JSDoc é um processo mais complicado -// que você pode conferir no manual do VS Code: -// -// https://code.visualstudio.com/docs/nodejs/working-with-javascript#_global-variables-and-type-checking - -// Adicionar comentários do JSDoc em suas funções é uma situação -// em que todos ganham. Você tem melhores ferramentas assim como -// todo os consumidores da sua API. diff --git a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Classes 101.ts b/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Classes 101.ts deleted file mode 100644 index a0a84c049bee..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Classes 101.ts +++ /dev/null @@ -1,55 +0,0 @@ -//// { order: 0 } - -// Uma classe é um tipo especial do objeto JavaScript, no qual -// sempre é criada a partir de um constructor. Essas classes -// agem muito como objetos, e possuem uma estrutura de herança -// parecida a linguagens como Java/C#/Swift. - -// Aqui está um exemplo de uma classe: - -class Vendor { - name: string; - - constructor(name: string) { - this.name = name; - } - - greet() { - return "Hello, welcome to " + this.name; - } -} - -// Uma instância pode ser criada por meio da palavra-chave new, e -// você pode chamar métodos e acessar propriedades do -// objeto. - -const shop = new Vendor("Ye Olde Shop"); -console.log(shop.greet()); - -// Você pode criar uma subclasse de um objeto. Aqui está um carrinho de comida que -// tem uma variedade assim como um nome: - -class FoodTruck extends Vendor { - cuisine: string; - - constructor(name: string, cuisine: string) { - super(name); - this.cuisine = cuisine; - } - - greet() { - return "Hi, welcome to food truck " + this.name + ". We serve " + this.cuisine + " food."; - } -} - -// Porque nós indicamos que deve ter dois argumentos -// para criar um novo FoodTruck, TypeScript fornecerá erros -// caso você utilize apenas um: - -const nameOnlyTruck = new FoodTruck("Salome's Adobo"); - -// Passar dois argumentos corretamente permitirá que você crie uma -// nova instância do FoodTruck: - -const truck = new FoodTruck("Dave's Doritos", "junk"); -console.log(truck.greet()); diff --git a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Generic Classes.ts b/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Generic Classes.ts deleted file mode 100644 index 965ba568fa92..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Generic Classes.ts +++ /dev/null @@ -1,95 +0,0 @@ -//// { order: 3 } - -// Este exemplo é, em sua maioria, em TypeScript, porque é um modo muito -// mais fácil de entender primeiro. Ao fim, nós iremos -// ver como criar a mesma classe, porém utilizando JSDoc. - -// Classes Genéricas são um meio de dizer que um tipo em particular -// depende de outro tipo. Por exemplo, aqui está uma gaveta -// que pode conter qualquer tipo de objeto, mas somente um tipo: - -class Gaveta { - conteudo: TipoDeRoupa[] = []; - - adicionar(objeto: TipoDeRoupa) { - this.conteudo.push(objeto); - } - - remover() { - return this.conteudo.pop(); - } -} - -// Para usar uma Gaveta você precisará trabalhar com outro tipo: - -interface Meia { - cor: string; -} - -interface Camiseta { - tamanho: "s" | "m" | "l"; -} - -// Nós podemos criar uma Gaveta somente para meias passando -// o tipo Meia quando criamos uma nova Gaveta: -const gavetaDeMeias = new Gaveta(); - -// Agora nós podemos adicionar ou remover meias na/da gaveta -gavetaDeMeias.adicionar({ cor: "branco" }); -const minhaMeia = gavetaDeMeias.remover(); - -// Assim como criar uma gaveta de Camisetas: -const gavetaDeCamisetas = new Gaveta(); -gavetaDeCamisetas.adicionar({ tamanho: "m" }); - -// Se você for um pouco excêntrico, você pode até criar -// uma gaveta que tem Meias e Camisetas usando para isso -// uma união ("union"): - -const gavetaMista = new Gaveta(); - -// Criar uma classe como a Gaveta sem a sintaxe do TypeScript -// requer o uso da tag "template" em JSDoc. -// Neste exemplo nós definimos a variável template, então -// definimos as propriedades da classe: - -// Para ter esse exemplo funcionando no playground, você terá -// que mudar as configurações para que seja um arquivo JavaScript, -// e apagar o código TypeScript acima. - -/** - * @template {{}} TipoDeRoupa - */ -class Comoda { - constructor() { - /** @type {TipoDeRoupa[]} */ - this.conteudo = []; - } - - /** @param {TipoDeRoupa} object */ - adicionar(objeto) { - this.conteudo.push(objeto); - } - - /** @return {TipoDeRoupa} */ - remover() { - return this.conteudo.pop(); - } -} - -// Então nós criamos um tipo novo através do JSDoc: - -/** - * @typedef {Object} Casaco uma roupa - * @property {string} cor cor do casaco - */ - -// Então, quando nós criamos uma nova instância daquela classe -// nós utilizamos @type para marcar a variável como uma Comoda -// que lida com Casacos - -/** @type {Comoda} */ -const comodaDeCasacos = new Comoda(); - -comodaDeCasacos.adicionar({ cor: "verde" }); -const casaco = comodaDeCasacos.remover(); diff --git a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Mixins.ts b/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Mixins.ts deleted file mode 100644 index da4ed0ff6598..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/Mixins.ts +++ /dev/null @@ -1,119 +0,0 @@ -//// { order: 4 } - -// Mixins são um falso padrão de herança múltipla para classes -// em JavaScript para o qual o TypeScript tem suporte. O padrão -// permite que você crie uma classe que é uma fusão de múltiplas -// classes. - -// Para começar, precisamos de um tipo que usaremos para estender -// de outras classes. A principal responsabilidade é declarar -// que o tipo que está sendo passado é uma classe. - -type Constructor = new (...args: any[]) => {}; - -// Então podemos criar uma série de classes que estendem -// a classe final envolvendo-a. Este padrão funciona bem -// quando objetos semelhantes têm recursos diferentes. - -// Este mixin adiciona uma propriedade de escala, com getters e setters -// para alterá-lo com uma propriedade privada encapsulada: - -function Scale(Base: TBase) { - return class extends Base { - // Mixins não podem declarar propriedades privadas / protegidas - // entretanto, você pode usar campos privados ES2020 - _scale = 1; - - setScale(scale: number) { - this._scale = scale; - } - - get scale(): number { - return this._scale; - } - }; -} - -// Este mixin adiciona métodos extras em torno da composição alpha -// algo que os computadores modernos usam para criar profundidade: - -function Alpha(Base: TBase) { - return class extends Base { - alpha = 1; - - setHidden() { - this.alpha = 0; - } - - setVisible() { - this.alpha = 1; - } - - setAlpha(alpha: number) { - this.alpha = alpha; - } - }; -} - -// Uma classe base de sprite simples que será estendida: - -class Sprite { - name = ""; - x = 0; - y = 0; - - constructor(name: string) { - this.name = name; - } -} - -// Aqui nós criamos dois tipos diferentes de sprites -// que têm recursos diferentes: - -const ModernDisplaySprite = Alpha(Scale(Sprite)); -const EightBitSprite = Scale(Sprite); - -// A criação de instâncias dessas classes mostra que -// os objetos têm diferentes conjuntos de propriedades -// e métodos devido aos seus mixins: - -const flappySprite = new ModernDisplaySprite("Bird"); -flappySprite.x = 10; -flappySprite.y = 20; -flappySprite.setVisible(); -flappySprite.setScale(0.8); -console.log(flappySprite.scale); - -const gameBoySprite = new EightBitSprite("L block"); -gameBoySprite.setScale(0.3); - -// Falha porque um EightBitSprite não tem -// o mixin para mudar alphas: -gameBoySprite.setAlpha(0.5); - -// Se você quiser dar mais garantias sobre as classes -// que você embrulha, você pode usar um construtor com genéricos. - -type GConstructor = new (...args: any[]) => T; - -// Agora você pode declarar que este mixin só pode ser -// aplicado quando a classe base tem uma determinada forma. - -type Moveable = GConstructor<{ setXYAcceleration: (x: number, y: number) => void }>; - -// Podemos então criar um mixin que depende da função -// presente no parâmetro para o GConstructor acima. - -function Jumpable(Base: TBase) { - return class extends Base { - jump() { - // Este mixin conhece setXYAcceleration agora - this.setXYAcceleration(0, 20); - } - }; -} - -// Não podemos criar este sprite até que haja uma classe -// na hierarquia mixin que adiciona setXYAcceleration: - -const UserSprite = new Jumpable(ModernDisplaySprite); diff --git a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/This.ts b/packages/playground-examples/copy/pt/JavaScript/Working With Classes/This.ts deleted file mode 100644 index e6f8d1894405..000000000000 --- a/packages/playground-examples/copy/pt/JavaScript/Working With Classes/This.ts +++ /dev/null @@ -1,91 +0,0 @@ -//// { order: 2 } - -// Quando um método de uma classe é chamado, você geralmente espera -// que ele se refira a atual instância dessa classe. - -class Cofre { - conteudo: string; - - constructor(conteudo: string) { - this.conteudo = conteudo; - } - - imprimeConteudo() { - console.log(this.conteudo); - } -} - -const cofre = new Cofre("Jóias da Coroa"); -cofre.imprimeConteudo(); - -// Se você veio de uma linguagem orientada a objetos onde -// a variável this/self é facilmente previsível, então você -// talvez precise ler sobre como o "this" pode ser confuso: -// -// https://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/ -// https://aka.ms/AA5ugm2 - -// Obs: isso pode mudar. A referência que o this se refere -// pode ser diferente dependendo de como você chama a função. - -// Por exemplo, se você usa uma referência para uma função em -// outro objeto, e então chama ela através dele - a variável this -// vai passar a ter de referência o objeto que recebe: - -const objetoCapturandoThis = { conteudo: "http://gph.is/VxeHsW", imprime: cofre.imprimeConteudo }; -objetoCapturandoThis.imprime(); // Imprime "http://gph.is/VxeHsW", e não "Jóias da Coroa" - -// Isso é complicado, porque quando lidamos com callback de APIs -// pode ser bastante tentador passar a referência direto para -// a função. Isso pode ser resolvido criando uma nova função -// no lugar de chamada. - -const objetoQueNaoCapturaThis = { conteudo: "N/A", imprime: () => cofre.imprimeConteudo() }; -objetoQueNaoCapturaThis.imprime(); - -// Existem algumas outras formas de resolver esse problema. Uma delas -// é forçar a ligação do this com o objeto que você originalmente -// pretendia ligar. - -const objetoCapturandoOThisDeNovo = { conteudo: "N/A", imprime: cofre.imprimeConteudo.bind(cofre) }; -objetoCapturandoOThisDeNovo.imprime(); - -// Para lidar com um contexto inesperado, você também pode -// mudar a forma com que criou a função na sua classe. -// Ao criar uma função que use uma arrow function, o momento -// que a vinculação acontece vai ser diferente. O que faz com -// que seja mais previsível para os que têm menos experiência -// com o tempo de execução do JavaScript. - -class CofreComSegurança { - conteudo: string; - - constructor(conteudo: string) { - this.conteudo = conteudo; - } - - imprimeConteudo = () => { - console.log(this.conteudo); - }; -} - -// Agora ao passar a função para outro objeto -// ele não vai acidentalmente mudar o this. - -const cofreASegurado = new CofreComSegurança("Caveira de Cristal"); -cofreASegurado.imprimeConteudo(); - -const objetoTentandoMudarOThis = { - conteudo: "http://gph.is/XLof62", - imprime: cofreASegurado.imprimeConteudo, -}; - -objetoTentandoMudarOThis.imprime(); - -// Se você tem um projeto em TypeScript, você pode usar a flag -// do compilador noImplicitThis para marcar casos onde o TypeScript -// não pode determinar que tipo de "this" é para a função. - -// Você pode ler mais sobre no manual: -// -// https://www.typescriptlang.org/docs/handbook/utility-types.html#thistypet diff --git a/packages/playground-examples/copy/pt/Playground/Config/JavaScript Playgrounds.js b/packages/playground-examples/copy/pt/Playground/Config/JavaScript Playgrounds.js deleted file mode 100644 index 6e183cc16afc..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Config/JavaScript Playgrounds.js +++ /dev/null @@ -1,37 +0,0 @@ -/// { order: 3, isJavaScript: true } - -// O playground agora pode manipular arquivos JavaScript - -// É bem razoável imaginar porque nós adicionaríamos suporte -// para JavaScript no playground, mas é provável que a maioria -// dos usuários de TypeScript estejam usando JavaScript - -// TypeScript pode usar inferência de tipos, aquisição de tipo e -// suporte JSDoc em um arquivo JavaScript para fornecer um -// vasto ambiente de ferramentas: -// -// exemplo:objetos-e-vetores -// exemplo:aquisição-de-tipo-automático -// exemplo:suporte-jsdoc - -// O playground suportar JavaScript significa que você pode -// aprender e guiar pessoas através de exemplos complexos -// de JSDoc, ou depurar problemas quando existem expectativas -// incompatíveis. - -// Por exemplo, por quê este comentário JSDoc não está tipado -// corretamente? - -/** - * Soma 2 números - * @param {number} O primeiro número - * @param {number} O segundo número - * @returns {number} - */ -function somaDoisNumeros(a, b) { - return a + b; -} - -// É muito mais fácil descobrir isso em um ambiente onde -// você pode ver imediatamente o que está acontecendo -// passando o cursor por cima diff --git a/packages/playground-examples/copy/pt/Playground/Config/New Compiler Defaults.ts b/packages/playground-examples/copy/pt/Playground/Config/New Compiler Defaults.ts deleted file mode 100644 index af03fa7090d7..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Config/New Compiler Defaults.ts +++ /dev/null @@ -1,55 +0,0 @@ -//// { order: 1 } - -// Sim, nós sabemos, os padrões para o tsconfig do TypeScript não -// tem strict ativado. Entretanto, em toda chance que temos o -// time recomenda que os usuários tentem migrar para ter o modo -// strict ativado nas suas configurações. - -// Porém, para o playground, felizmente podemos estabelecer os -// padrões como strict. O playground também vai manter um -// acompanhamento das flags do compilador que mudaram dos padrões -// do playground e fazer elas serem compartilháveis na URL. - -// Você pode ler mais sobre as URLs em: -// exemplo:urls-compartilháveis - -// Se perguntando quais são os novos padrões? - -declare const trueInTS: boolean; -declare const trueInJS: boolean; -declare const monaco: any; - -const defaultCompilerOptions = { - noImplicitAny: true, - strictNullChecks: trueInTS, - strictFunctionTypes: true, - strictPropertyInitialization: true, - strictBindCallApply: true, - noImplicitThis: true, - noImplicitReturns: true, - - alwaysStrict: true, - allowUnreachableCode: false, - allowUnusedLabels: false, - - downlevelIteration: false, - noEmitHelpers: false, - noLib: false, - noStrictGenericChecks: false, - noUnusedLocals: false, - noUnusedParameters: false, - - esModuleInterop: true, - preserveConstEnums: false, - removeComments: false, - skipLibCheck: false, - - checkJs: trueInJS, - allowJs: trueInJS, - - experimentalDecorators: false, - emitDecoratorMetadata: false, - - target: monaco.languages.typescript.ScriptTarget.ES2017, - jsx: monaco.languages.typescript.JsxEmit.None, -}; diff --git a/packages/playground-examples/copy/pt/Playground/Language/Automatic Type Acquisition.ts b/packages/playground-examples/copy/pt/Playground/Language/Automatic Type Acquisition.ts deleted file mode 100644 index c36c3805bce0..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Language/Automatic Type Acquisition.ts +++ /dev/null @@ -1,35 +0,0 @@ -// Aquisição Automática de Tipo é o termo para como o TypeScript -// obtém definições de tipo do @types no npm nos bastidores para -// conceder uma umelhor experiência de usuário para os usuários -// de JavaScript. - -// O playground agora tem uma versão similar (porém um pouco -// mais limitada ) do processo de aquisição de tipo intergrado -// ao TypeScript. - -// Você pode utilizá-lo criando importações no seu código. -// Funciona tanto através do @types do DefinitelyTyped ou por -// arquivos d.ts dentro da própria dependência. - -import { danger } from "danger"; - -// Destaque estes identificadores abaixo para ver os JSDocs -// associados dos tipos integrados: - -danger.github; - -// Isto também manipula dependências transitivas, então nesse caso, -// danger também depende do @octokit/rest. - -danger.github.api.pulls.createComment(); - -// Aquisição de Tipo também irá levar os módulos integrados do -// Node em consideração e puxar as declarações de tipo do Node -// quando você usa qualquer uma dessas dependências. Observe que, -// esses tendem a ser mais longos que os outros já que existem -// muitos tipos para serem baixados. - -import { readFileSync } from "fs"; - -const inputPath = "my/path/file.ts"; -readFileSync(inputPath, "utf8"); diff --git a/packages/playground-examples/copy/pt/Playground/Language/Fixits.ts b/packages/playground-examples/copy/pt/Playground/Language/Fixits.ts deleted file mode 100644 index e38ef4574490..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Language/Fixits.ts +++ /dev/null @@ -1,23 +0,0 @@ -//// { compiler: { }, order: 1 } - -// O TypeScript suporta muitos fixits que ajudam a refatorar -// seu código. Por exemplo, se você selecionar o texto -// na linha 7 e clicar na lâmpada que aparece, você -// receberá algumas sugestões de refatoração. - -function addOne(x: number) { - return x + 1; -} - -// Este recurso está disponível a partir do TypeScript versão 3.7, -// que também incluirá compilações noturnas. - -// Provavelmente isso é algo que você não vai usar -// no playground quando estiver aprendendo ou testando exemplos. - -// De qualquer maneira, ter fixits disponíveis significa que -// podemos documentá-las no playground e isso é valioso. - -// example:big-number-literals -// example:const-to-let -// example:infer-from-usage-changes diff --git a/packages/playground-examples/copy/pt/Playground/Tooling/Mobile Support.ts b/packages/playground-examples/copy/pt/Playground/Tooling/Mobile Support.ts deleted file mode 100644 index bb0ef3195826..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Tooling/Mobile Support.ts +++ /dev/null @@ -1,15 +0,0 @@ -//// { order: 99 } - -// Dispositivos pequenos podem não ser muito bons para escrever código, -// mas são bons para ler nossos exemplos ou fornecer revisões rápidas -// para alguém e solicitar pequenas alterações. - -// Com o novo Playground, fizemos algumas melhorias na -// experiência para telas pequenas, como: - -// - Removemos itens de menu que não estão relacionados ao código. -// - Pequenas melhorias no visual. -// - Mudamos para um painel único no editor. Isso significa -// que você não pode mais ver o JS transpilado. - -// Isso deve tornar a experiência menos dolorosa. diff --git a/packages/playground-examples/copy/pt/Playground/Tooling/Sharable URLs.ts b/packages/playground-examples/copy/pt/Playground/Tooling/Sharable URLs.ts deleted file mode 100644 index 59b32178a6fa..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Tooling/Sharable URLs.ts +++ /dev/null @@ -1,30 +0,0 @@ -//// { order: 1 } - -// Com o novo Playground, os URLs tem muito mais informações -// sobre suas configurações. Isso faz com que reproduções -// sejam precisas, e que você não tenha que falar para alguém -// usar uma determinada flag de compilador para replicar a -// sua configuração. - -// A URL contem: -// -// - Se você está em um exemplo -// - O código-fonte compactado para o seu TypeScript/JavaScript -// - Retrocompatilibilidade com URLs antigas não compactadas -// - Em qual idioma você está trabalhando -// - A diferença entre suas configurações de compilação e -// a configuração padrão -// Por exemplo: example:new-compiler-defaults -// - A sua seleção de texto, caso você tenha algum código destacado -// -// O URL é automaticamente atualizado quando ocorre alguma mudança -// nos tópicos acima, utilizando o replaceState do HTML5, então -// o seu botão de voltar vai continuar funcionando como esperado. - -// Quando um exemplo é carregado, você ocasionalmente verá e=[numero] -// que é usado para garantir que o navegador recarregue corretamente -// quando você alternar entre os exemplos. É inofensivo. - -// Você pode ver a mudança do URL nessa pagina editando alguns dos -// comentários, ou selecionando algum texto. Ao recarregar a página -// o seu navegador vai retornar ao mesmo estado em que estava. diff --git a/packages/playground-examples/copy/pt/Playground/Tooling/TypeScript Versions.ts b/packages/playground-examples/copy/pt/Playground/Tooling/TypeScript Versions.ts deleted file mode 100644 index 62413665b587..000000000000 --- a/packages/playground-examples/copy/pt/Playground/Tooling/TypeScript Versions.ts +++ /dev/null @@ -1,28 +0,0 @@ -// Com o novo Playground, nós temos muito mais controle sobre -// o ambiente em que seu código é executado. O novo Playground -// está agora levemente acoplado ao monaco-editor e ao -// monaco-typescript que fornecem a experiência de edição - -// https://github.com/microsoft/monaco-editor/ -// https://github.com/microsoft/monaco-typescript - -// Levemente acoplado significa que o playground permite que o -// usuário tenha suporte ao uso de diferentes versões -// do TypeScript que o monaco-typescript tem integrado. - -// Nós temos a infraestrutura para criar uma cópia do monaco-editor -// e do monaco-typescript para qualquer versão do TypeScript. Isso -// significa que agora nós podemos suportar: - -// - Versões beta do TypeScript -// - Versões Nigthly do TypeScript -// - Versões em Pull Request do TypeScript -// - Versões antigas do TypeScript - -// via https://github.com/orta/make-monaco-builds - -// A arquitetura essencial para explicar como o playground agora -// suporta diferentes versões do TypeScript vem de uma fork -// do projeto do qual esse site deriva: - -// https://github.com/agentcooper/typescript-play diff --git a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Enums.ts b/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Enums.ts deleted file mode 100644 index d79c9fd63da0..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Enums.ts +++ /dev/null @@ -1,81 +0,0 @@ -// Enums são uma funcionalidade adicionada ao JavaScript pelo TypeScript -// na qual facilita o manuseio de grupos de constantes nomeadas. - -// Por padrão um enum é baseado em números, começando no zero, -// e para cada opção é assinalado um número incrementado por um. -// Isso é útil quando o valor em si não importa. - -enum DirecaoBussola { - Norte, - Leste, - Sul, - Oeste, -} - -// Quando se escreve uma opção do enum, o valor é atribuido; -// incrementos continuam a partir daquele valor: - -enum StatusCodes { - OK = 200, - BadRequest = 400, - Unauthorized, - PaymentRequired, - Forbidden, - NotFound, -} - -// Você referencia um enum usando EnumName.Value - -const direcaoInicial = DirecaoBussola.Leste; -const statusAtual = StatusCodes.OK; - -// Enums suportam o acesso ao dado em ambos os lados: Da chave -// ao valor e do valor a chave. - -const ok = StatusCodes.OK; -const indiceOk = StatusCodes["OK"]; -const stringBadRequest = StatusCodes[400]; - -// Enums podem ser de diferentes tipos, sendo o tipo string mais comum. -// Quando se usa string, o debug da aplicação pode ser mais fácil de ser -// realizado porque o valor em tempo de execução não requer que você olhe o número. - -enum entradaGamePad { - Cima = "UP", - Baixo = "DOWN", - Esquerda = "LEFT", - Direita = "RIGHT", -} - -// Se você quer reduzir o número de objetos em tempo de -// execução no JavaScript, você vai criar um enum constante. - -// Um valor constante de um enum é substituído pelo TypeScript durante -// a transpilação do seu código, ao invés de buscar o valor por -// um objeto em temp ode execução. - -const enum MouseAction { - MouseDown, - MouseUpOutside, - MouseUpInside, -} - -const handleMouseAction = (action: MouseAction) => { - switch (action) { - case MouseAction.MouseDown: - console.log("Clique"); - break; - } -}; - - // Se você olhar o JavaScript transpilado, você poderá ver - // como os outros enums existem como objetos e funções, apesar - // de que MouseAction não estará lá. - - // Isto também é verdade para a conferência contra MouseAction.MouseDown - // dentro do bloco de switch dentro de handleMouseAction - - // Enums podem fazer mais que isso, você pode ler mais sobre no - // manual do TypeScript: - // - // https://www.typescriptlang.org/docs/handbook/enums.html diff --git a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Nominal Typing.ts b/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Nominal Typing.ts deleted file mode 100644 index ad09edc252eb..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Nominal Typing.ts +++ /dev/null @@ -1,66 +0,0 @@ -// Um sistema de tipos nominal significa que cada tipo é -// único e, mesmo se os tipos possuam os mesmos dados, eles -// não podem ser atribuídos entre tipos. - -// O sistema de tipos do TypeScript é estrutural, o que -// significa que se um tipo tem a forma de um pato, ele é -// um pato. Se um ganso tem todos os atributos de um pato, -// então ele também é um pato. Você pode aprender mais em: -// example:structural-typing - -// Isso pode trazer desvantagens, por exemplo, existem casos -// em que uma string ou número podem ter um contexto especial -// e você não quer que esses valores sejam transferíveis. -// Por exemplo: - -// - Strings com entradas de usuários (inseguro) -// - Strings de tradução -// - Números de identificação de usuário -// - Tokens de acesso - -// É possível implementar a maior parte das funções de um -// sistema de tipos nominal com um pouco de código adicional. - -// Utilizando um tipo de interseção, com uma restrição na -// forma de uma propriedade chamada __brand (isso é uma -// convenção), tornamos impossível atribuir uma string comum -// a um tipo StringDeEntradaValidada. - -type StringDeEntradaValidada = string & { __brand: "Entrada de Usuário Após Validação" }; - -// Agora utilizaremos uma função para transformar uma string -// em uma StringDeEntradaValidada - mas algo a se notar é que -// nós estamos apenas dizendo ao TypeScript que isso é verdade. - -const validarEntradaDeUsuario = (entrada: string) => { - const validacaoSimplesDeEntrada = entrada.replace(/\ { - console.log(nome); -}; - -// Por exemplo, aqui temos uma entrada insegura de um usuário -// que, após passar pelo validador, é impressa sem problemas: - -const entrada = "\n"; -const validatedInput = validarEntradaDeUsuario(entrada); -imprimirNome(validatedInput); - -// Por outro lado, passar uma string não-validada para a função -// imprimirNome causará um erro no compilador: - -imprimirNome(entrada); - -// Você pode consultar uma visão geral das diferentes maneiras -// de criar tipos nominais, com suas vantagens e desvantagens, -// nesse issue do GitHub (em inglês): - -// https://github.com/Microsoft/TypeScript/issues/202 - -// Também pode acessar um ótimo sumário neste post (em inglês): -// https://michalzalecki.com/nominal-typing-in-typescript/ diff --git a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Types vs Interfaces.ts b/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Types vs Interfaces.ts deleted file mode 100644 index 21295095d079..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language Extensions/Types vs Interfaces.ts +++ /dev/null @@ -1,82 +0,0 @@ -// Existem dois tipos principais para declarar a forma de um -// objeto: interfaces e tipos. - -// Eles são bem parecidos e para a maioria dos casos -// funcionam da mesma forma. - -type TipoPassaro = { - asas: 2; -}; - -interface InterfacePassaro { - asas: 2; -} - -const passaro1: TipoPassaro = { asas: 2 }; -const passaro2: InterfacePassaro = { asas: 2 }; - -// Porque o Typescript é um sistema de tipagem estrutural -// é possível misturar o seu uso também. - -const passaro3: InterfacePassaro = passaro1; - -// Ambos suportam a extensão de outras interfaces e tipos. -// Os tipos fazem isso através da interseção de tipos, -// enquanto interfaces possuem uma palavra-chave. - -type Coruja = { noturno: true } & TipoPassaro; -type Robin = { noturno: false } & InterfacePassaro; - -interface Pavao extends TipoPassaro { - colorido: true; - voa: false; -} -interface Galinha extends InterfacePassaro { - colorido: false; - voa: false; -} - -let coruja: Coruja = { asas: 2, noturno: true }; -let galinha: Galinha = { asas: 2, colorido: false, voa: false }; - -// Tendo dito isso nós recomendamos você a usar interfaces ao invés de tipos. -// Especialmente porque você recebe melhores mensagens de erro. -// Se passar o mouse sobre o erro, você pode ver os erros que o Typescript -// mais focados para interfaces como a Galinha. - -coruja = galinha; -galinha = coruja; - -// Uma das maiores diferenças entre tipos e interfaces é que -// interfaces são abertas e tipos são fechados. -// Isso signifca que você pode extender interfaces declarando -// uma segunda vez. - -interface Gato { - ronrona: boolean; -} - -interface Gato { - cor: string; -} - -// Por outro lado tipos não podem ser alterados fora -// da prórpia declaração. - -type Filhote = { - cor: string; -}; - -type Filhote = { - brinquedos: number; -}; - -// Dependendo dos seus objetivos essa diferença pode ser -// positiva ou negativa. No entando, para expor os tipos publicamente -// é melhor transformá-los em interfaces. - -// Como um dos melhores recursos para ver todos os casos de uso -// de tipos vs interfaces, recomendamos essa thread do Stackoverflow -// como um bom ponto de partida: - -// https://stackoverflow.com/questions/37233735/typescript-interfaces-vs-types/52682220#52682220 diff --git a/packages/playground-examples/copy/pt/TypeScript/Language/Soundness.ts b/packages/playground-examples/copy/pt/TypeScript/Language/Soundness.ts deleted file mode 100644 index 86a8a1abc781..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language/Soundness.ts +++ /dev/null @@ -1,116 +0,0 @@ -//// {compiler: { strictFunctionTypes: false } } - -// Sem um histórico na teoria de tipos, é improvável que você -// esteja familiarizado com a ideia de um sistema de tipos ser "sólido" (_sound_). - -// Solidez (_Soundness_) é a ideia de que o compilador pode dar garantias sobre o tipo -// de um valor em tempo de execução, e não apenas durante a compilação. -// Isso é normal para a maioria das linguagens de programação -// que são construídas com tipos desde a sua criação. - -// Construir um sistema de tipo que modela uma linguagem que existe -// há algumas décadas, no entanto, torna-se sobre tomar -// decisões que podem ter efeitos em três propriedades: Simplicidade, -// Usabilidade e Solidez. - -// Com o objetivo do TypeScript de ser capaz de suportar todo o código -// JavaScript, a linguagem tende à simplicidade e usabilidade quando -// apresentada com maneiras de adicionar tipos ao JavaScript. - -// Vejamos alguns casos em que o TypeScript provavelmente -// não é adequado para entender como seriam -// essas compensações de outra forma. - -// Asserções de tipo - -const idadeDoUsuario = ("23" as any) as number; - -// O TypeScript permitirá que você use asserções de tipo para substituir -// a inferência de algo que está totalmente errado. Usar asserções de tipo -// é uma maneira de dizer ao TypeScript que você o conhece melhor, -// e o TypeScript tentará permitir que você prossiga com isso. - -// Linguagens que são sólidas ocasionalmente usariam verificações -// de tempo de execução para garantir que os dados correspondam ao que -// seus tipos dizem - mas o TypeScript visa não ter impacto no tempo -// de execução com reconhecimento de tipo no seu código transpilado. - -// Função Parâmetro Bi-variância - -// Parâmetros para uma função que suportam a redefinição do -// parâmetro para ser um subtipo da declaração original. - -interface InputEvent { - timestamp: number; -} -interface MouseInputEvent extends InputEvent { - x: number; - y: number; -} -interface KeyboardInputEvent extends InputEvent { - keyCode: number; -} - -function escuteOEvento(eventType: "keyboard" | "mouse", handler: (event: InputEvent) => void) {} - -// Você pode declarar novamente o tipo de parâmetro como um subtipo -// da declaração. Acima, o manipulador esperava um tipo InputEvent, -// mas nos exemplos de uso abaixo - o TypeScript aceita um tipo -// que possui propriedades adicionais. - -escuteOEvento("keyboard", (event: KeyboardInputEvent) => {}); -escuteOEvento("mouse", (event: MouseInputEvent) => {}); - -// Isso pode voltar ao menor tipo comum: - -escuteOEvento("mouse", (event: {}) => {}); - -// Mas não mais: - -escuteOEvento("mouse", (event: string) => {}); - -// Isso cobre o padrão real do event listener em JavaScript, -// às custas de ser sólido. - -// O TypeScript pode gerar um erro quando isso acontecer por meio -// de `strictFunctionTypes`. Ou você pode contornar este caso -// específico com sobrecargas de função, consulte: -// exemplo: typing-functions - -// Casing especial para Void - -// Descarte de parâmetros - -// Para aprender sobre casos especiais com parâmetros de função, -// consulte o exemplo: structural-typing - -// Parâmetros rest - -// Os parâmetros rest são considerados opcionais, isso significa -// que o TypeScript não terá uma maneira de impor o número de -// parâmetros disponíveis para um retorno de chamada. - -function obterNumerosAleatorios(count: number, callback: (...args: number[]) => void) {} - -obterNumerosAleatorios(2, (first, second) => console.log([first, second])); -obterNumerosAleatorios(400, first => console.log(first)); - -// Funções nulas podem corresponder a uma função com um valor de retorno - -// Uma função que retorna uma função void pode -// aceitar uma função que assume qualquer outro tipo. - -const obterPI = () => 3.14; - -function executarFuncao(func: () => void) { - func(); -} - -executarFuncao(obterPI); - -// Para obter mais informações sobre os locais onde -// a solidez do sistema de tipo está comprometida, consulte: - -// https://github.com/Microsoft/TypeScript/wiki/FAQ#type-system-behavior -// https://github.com/Microsoft/TypeScript/issues/9825 -// https://www.typescriptlang.org/docs/handbook/type-compatibility.html diff --git a/packages/playground-examples/copy/pt/TypeScript/Language/Structural Typing.ts b/packages/playground-examples/copy/pt/TypeScript/Language/Structural Typing.ts deleted file mode 100644 index 1668041099d2..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language/Structural Typing.ts +++ /dev/null @@ -1,84 +0,0 @@ -// TypeScript é um Sistema de Tipagem Estrutural, isso significa -// que comparando tipos, o Typescript leva em consideração apenas -// as propriedades do tipo. - -// Isso em contraste a sistemas de tipagem nominais, onde você -// pode criar dois tipos mas não pode atribuir um ao outro. -// Veja o example:nominal-typing - -// Por exemplo, essas duas interfaces são -// transferíveis em um sistema de tipo estrutural - -interface Bola { - diametro: number; -} -interface Esfera { - diametro: number; -} - -let bola: Bola = { diametro: 10 }; -let esfera: Esfera = { diametro: 20 }; - -esfera = bola; -bola = esfera; - -// Se nós adicionarmos um tipo que possui estruturalmente todas -// as propriedades de Bola e Esfera, esse tipo também poderá ser -// atribuído a um Bola ou Esfera. - -interface Tubo { - diametro: number; - tamanho: number; -} - -let tubo: Tubo = { diametro: 12, tamanho: 3 }; - -tubo = bola; -bola = tubo; - -// Porque a variável bola não tem a propriedade tamanho, ela não pode -// ser atribuída a tubo. No entanto, já que todas as propriedades -// de Bola estão dentro de tubo, ela pode ser atribuída a variável bola. - -// TypeScript é a comparação entre propriedades de um tipo contra -// as de outro para verificar a igualdade. - -// Uma função é um objeto em Javascript e isso é comparado de forma -// semelhante. Com um truque extra em volta dos parâmetros: - -let criaBola = (diametro: number) => ({ diametro }); -let criaEsfera = (diametro: number, emPolegadas: boolean) => { - return { diametro: emPolegadas ? diametro * 0.39 : diametro }; -}; - -criaEsfera = criaBola; -criaBola = criaEsfera; - -// TypeScript vai permitir (number) ser igual (number, boolean) -// nos parâmetros, mas não (number, boolean) -> (number) - -// TypeScript vai descartar o boolean na primeira atribuição -// porque é bastante comum para o código Javascript pular a -// passagem de parâmetros quando não são necessários. - -// Por exemplo o callback do método forEach de Arrays possui -// três parâmetros, valor, index e o array completo - se o Typescript -// não suportasse o descarte de parâmetros, ele teria que incluir -// todas as opções para fazer as funções combinarem: - -[criaBola(1), criaBola(2)].forEach((bola, _index, _bolas) => { - console.log(bola); -}); - -// Ninguém precisa disso. - -// Tipos de retorno são tratados como objetos, e qualquer diferença -// é comparada usando a mesma regra de igualdade a cima. - -let criaBolaVermelha = (diametro: number) => ({ diametro, color: "red" }); - -criaBola = criaBolaVermelha; -criaBolaVermelha = criaBola; - -// Aqui o primeiro argumento funciona (os dois possuem diâmetro) -// mas o segundo não (a variável bola não possui cor). diff --git a/packages/playground-examples/copy/pt/TypeScript/Language/Type Guards.ts b/packages/playground-examples/copy/pt/TypeScript/Language/Type Guards.ts deleted file mode 100644 index 1e71ba1431ef..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language/Type Guards.ts +++ /dev/null @@ -1,91 +0,0 @@ -// Type Guarding é o termo dado para quando você influencia a análise -// de fluxo do código através dele mesmo. O TypeScript usa o comportamento existente do javascript -// o qual valida seus objetos em tempo de execução para influenciar -// o fluxo do código. Este exemplo assume que você já leu example:code-flow - -// Para rodar esses exemplos, vamos criar algumas classes, -// aqui está um sistema para lidar com pedidos pela internet ou telefone. - -interface Order { - address: string; -} -interface TelephoneOrder extends Order { - callerNumber: string; -} -interface InternetOrder extends Order { - email: string; -} - -// Aqui um tipo que poderia ser um dos dois subtipos de Order ou undefined -type PossibleOrders = TelephoneOrder | InternetOrder | undefined; - -// E uma função que retorna um PossibleOrder -declare function getOrder(): PossibleOrders; -const possibleOrder = getOrder(); - -// Nós podemos usar o operador "in" para verificar se uma chave específica -// está no objeto, para limitar a união. ("in" é um operador -// Javascript para testar chaves de objetos.) - -if ("email" in possibleOrder) { - const mustBeInternetOrder = possibleOrder; -} - -// Você pode usar o operador JavaScript "instanceof" se você -// tiver uma classe que está em conformidade com a interface: - -class TelephoneOrderClass { - address: string; - callerNumber: string; -} - -if (possibleOrder instanceof TelephoneOrderClass) { - const mustBeTelephoneOrder = possibleOrder; -} - -// Você pode usar o operador Javascript "typeof" para -// limitar a união. Isso apenas funciona com primitivos -// dentro do JavaScript (como strings, objects, numbers). - -if (typeof possibleOrder === "undefined") { - const definitelyNotAnOder = possibleOrder; -} - -// Você pode ver uma lista completa de possíveis valores para o typeof -// aqui: https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/typeof - -// Usar operadores JavaScript pode levar você muito longe. Quando -// você quiser verificar seu próprio tipos de objeto você pode usar -// funções com predicado de tipos. - -// Um função com predicado de tipos é uma função onde o tipo de -// retorno oferece informação a análise do fluxo de código quando -// a função retorna verdadeira. - -// Usando o PossibleOrder, nós podemos usar dois type guards -// para declarar qual tipo o possibleOrder é: - -function isAnInternetOrder(order: PossibleOrders): order is InternetOrder { - return order && "email" in order; -} - -function isATelephoneOrder(order: PossibleOrders): order is TelephoneOrder { - return order && "calledNumber" in order; -} - -// Agora nós podemos usar essas funções em condicionais if para estreitar -// o tipo no qual possibleOrder está dentro do if: - -if (isAnInternetOrder(possibleOrder)) { - console.log("Pedido recebido por email:", possibleOrder.email); -} - -if (isATelephoneOrder(possibleOrder)) { - console.log("Pedido recebido por telefone:", possibleOrder.callerNumber); -} - -// Você pode ler mais sobre análise de fluxo de código aqui: -// -// - example:code-flow -// - example:type-guards -// - example:discriminate-types diff --git a/packages/playground-examples/copy/pt/TypeScript/Language/Type Widening and Narrowing.ts b/packages/playground-examples/copy/pt/TypeScript/Language/Type Widening and Narrowing.ts deleted file mode 100644 index c73c62b66a79..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Language/Type Widening and Narrowing.ts +++ /dev/null @@ -1,67 +0,0 @@ -// Pode ser mais fácil começar a discussão do -// alargamento e estreitamento com um exemplo: - -const welcomeString = "Olá! Estranho"; -let replyString = "Hey"; - -// Além das diferenças de texto das strings, welcomeString -// é um const (o que significa que o valor nunca mudará) -// e replyString é um let (que significa que o valor pode mudar). - -// Se você passar o mouse sobre as duas variáveis, -// obterá informações de tipo muito diferentes do TypeScript: -// -// const welcomeString: "Hello There" -// -// let replyString: string - -// TypeScript inferiu que o tipo do welcomeString é -// a string literal "Hello There", enquanto replyString -// é uma string genérica. - -// Isso ocorre porque um let precisa ter um tipo mais amplo, você -// pode determinar replyString para ser qualquer outra string - no qual significa -// ter uma grande conjunto de possibilidades. - -replyString = "Hi :wave:"; - -// Se replyString tiver uma string literal "Hey" - então -// você nunca poderia mudar o valor pois ele poderia mudar -// para apenas "Hey" de novo. - -// Os alargamento e estreitamento de tipos são sobre expandir e reduzir -// as possibilidades no qual um tipo pode representar. - -// Um exemplo de estreitamento de tipos é trabalhando com uniões, o -// exemplo do fluxo de análise do código é quase inteiramente baseado no -// estreitamento: example:code-flow - -// O estreitamento de tipos é o que dá poder ao modo estrito do TypeScript -// por meio das verificações de nulidade. Com o modo estrito desligado, -// marcadores de nulidade como undefined e null são ignorados -// em uma união. - -declare const quantumString: string | undefined; -// Isso irá falhar no modo strict apenas -quantumString.length; - -// No modo estrito a responsabilidade recai sobre o autor do código para garantir -// que o tipo foi limitado ao tipo não nulo. -// Normalmente, isso é tão simples quanto uma verificação if: - -if (quantumString) { - quantumString.length; -} - -// No modo estrito o tipo quantumString tem duas representações. -// Dentro do if, o tipo foi limitado para apenas string. - -// Você pode ver mais exemplos de estreitamento aqui: -// -// example:union-and-intersection-types -// example:discriminate-types - -// E ainda mais materiais na web: -// -// https://mariusschulz.com/blog/literal-type-widening-in-typescript -// https://sandersn.github.io/manual/Widening-and-Narrowing-in-Typescript.html diff --git a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Conditional Types.ts b/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Conditional Types.ts deleted file mode 100644 index 1b5f34678558..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Conditional Types.ts +++ /dev/null @@ -1,103 +0,0 @@ -// Tipos Condicionais fornecem uma maneira simples de adicionar -// lógica no sistema de tipos do Typescript. Esse é um recurso -// avançado, e é muito possível que você não precise utilizá-lo -// no seu código do dia a dia. - -// Um tipo condicional se parece com: -// -// A extends B ? C : D -// -// Onde a condição é: se um tipo se extende a uma expressão, -// e que tipo deveria ser retornado. - -// Vamos passar por alguns exemplos, por questões de brevidade -// usaremos apenas uma letra para tipos genéricos. Isso é opcional, -// mas nos restringimos à 60 caracteres para caber na tela. - -type Gato = { miau: true }; -type Cachorro = { latido: true }; -type Guepardo = { miau: true; rapido: true }; -type Lobo = { latido: true; uivos: true }; - -// Podemos criar um tipo condicional onde é possível extrair -// tipos que se aplicam apenas com algo que late. - -type ExtrairLatidos = A extends { latido: true } ? A : never; - -// Assim podemos criar tipos envolvidos pelo ExtrairLatidos: - -// Um gato não late, então iremos retornar never -type GatoNever = ExtrairLatidos; -// Um lobo late, então retornaremos a forma de lobo -type TipoLobo = ExtrairLatidos; - -// Isso se torna útil quando você quer trabalhar com uma união -// de vários tipos e reduzir o número de potenciais opções: - -type Animais = Gato | Cachorro | Guepardo | Lobo; - -// Quando você aplica ExtrairLatidos para um tipo de união, -// é o mesmo que testar a condição com todos os membros do tipo: - -type Latido = ExtrairLatidos; - -// = ExtrairLatidos | ExtrairLatidos | -// ExtrairLatidos | ExtrairLatidos -// -// = never | Cachorro | never | Lobo -// -// = Cachorro | Lobo (veja example:unknown-and-never) - -// Isso é chamado de tipo condicional distributivo porque -// o tipo distribui para cada membro da união. - -// Tipos condicionais diferidos - -// Tipos condicionais podem ser usados para diminuir suas APIs -// que podem retornar diferentes tipos dependendo dos inputs. - -// Por exemplo, essa função pode retornar tanto uma string -// quanto um number dependendo do boolean passado. - -declare function pegarID(legal: T): T extends true ? string : number; - -// Então dependendo do quanto o sistema de tipos sabe sobre o boolean -// você irá receber um tipo de retorno diferente: -let retornoDeString = pegarID(true); -let retornoDeNumber = pegarID(false); -let stringOuNumber = pegarID(Math.random() < 0.5); - -// Nesse caso acima o TypeScript sabe o tipo de retorno imediatamente. -// Contudo, você pode usar tipos condicionais em funções -// onde o tipo não é conhecido. Isso é chamado tipo condicional diferido. - -// O mesmo que o nosso ExtrairLatidos acima, mas como uma função -declare function extrairMiado(x: T): T extends { miau: true } ? T : undefined; - -// Existe uma ferramenta muito útil dentro dos tipos condicionais, na qual -// é possível especificamente dizer ao TypeScript que ele deve inferir o tipo -// quando diferido. Essa é a palavra chave 'infer'. - -// 'infer' é normalmente usado para criar metatipos que inspecionam -// os tipos existentes no seu código, pense nisso como a criação de uma -// nova variável dentro do tipo. - -type PegarOTipoDoRetorno = T extends (...args: any[]) => infer R ? R : T; - -// Brevemente: -// -// - esse é um tipo genérico condicional chamado PegarOTipoDoRetorno -// que recebe um tipo como primeiro parâmetro -// -// - a condição checa se o tipo é uma função, e se for cria um novo tipo -// chamado R baseado no retorno do valor da função -// -// - se a checagem passar, o valor do tipo é inferido como o valor do -// retorno da função, caso contrario é o tipo original -// - -type retornoDoPegarID = PegarOTipoDoRetorno; - -// Isso falha na verifição de ser uma função, e iria apenas retornar o tipo -// passado a ele. -type pegarGato = PegarOTipoDoRetorno; diff --git a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Discriminate Types.ts b/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Discriminate Types.ts deleted file mode 100644 index baf4016295fb..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Discriminate Types.ts +++ /dev/null @@ -1,66 +0,0 @@ -// Uma união de tipos discriminados é quando você usa análise -// de fluxo de código para reduzir um conjunto de objetos -// para um objeto específico. - -// Esse padrão funciona muito bem para conjuntos de objetos -// semelhantes com propriedades em comum, por exemplo: uma -// lista de eventos nomeados, ou um conjunto de objetos -// versionados. - -type EventoCronometrado = { nome: "inicio"; usuarioIniciou: boolean } | { nome: "encerrado"; duracao: number }; - -// Quando o evento chega na função abaixo, ele pode ser -// qualquer um dos dois tipos possíveis. - -const tratarEvento = (evento: EventoCronometrado) => { - // Usando um switch com evento.nome, a análise de fluxo de - // código do TypeScript consegue determinar que um objeto - // pode ser representado somente por um tipo da união. - - switch (evento.nome) { - case "inicio": - // Isso significa que você pode acessar usuarioIniciou - // com segurança, porque esse é o único tipo dentro de - // EventoCronometrado onde nome é "inicio". - const usuarioIniciou = evento.usuarioIniciou; - break; - - case "encerrado": - const intervaloDeTempo = evento.duracao; - break; - } -}; - -// Também podemos usar números como o discriminador, seguindo -// o mesmo padrão. - -// Nesse exemplo, temos uma união discriminada e um estado -// de erro adicional para tratar. - -type RespostasAPI = { versao: 0; mensagem: string } | { versao: 1; mensagem: string; status: number } | { erro: string }; - -const tratarResposta = (resposta: RespostasAPI) => { - // Tratar o caso de erro, e então retornar. - if ("erro" in resposta) { - console.error(resposta.erro); - return; - } - - // O TypeScript agora sabe que respostas não pode ser do - // tipo erro. Caso fosse, a função teria retornado. Você - // pode verificar isso passando o mouse sobre resposta no - // trecho abaixo. - - if (resposta.versao === 0) { - console.log(resposta.mensagem); - } else if (resposta.versao === 1) { - console.log(resposta.status, resposta.mensagem); - } -}; - -// É recomendado utilizar um bloco switch no lugar de um -// bloco if porque assim você pode garantir que todas as -// partes da união são checadas. Existe um bom padrão para -// isso usando o tipo never no manual (em inglês): -// -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#discriminated-unions diff --git a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Indexed Types.ts b/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Indexed Types.ts deleted file mode 100644 index a2631f7192a4..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Indexed Types.ts +++ /dev/null @@ -1,38 +0,0 @@ -// Existem situações em que você se encontra duplicando -// tipos, um exemplo comum são recursos aninhados em uma -// resposta de API gerada automaticamente. - -interface ResultadosBuscaDeObras { - artistas: { - nome: string; - obras: { - nome: string; - dataFalecimento: string | null; - bio: string; - }[]; - }[]; -} - -// Se essa interface fosse feita manualmente, é fácil imaginar -// que as obras seriam separadas em uma interface como: - -interface Obras { - nome: string; - dataFalecimento: string | null; - bio: string; -} - -// No entanto, nesse caso não temos controle da API e, se -// criarmos a interface manualmente, é possível que o campo -// obras em ResultadosBuscaDeObras e Obras fiquem defasados -// quando houver uma mudança na resposta. - -// Para resolver esse problema utilizamos tipos indexados, -// que replicam como JavaScript permite acessar propriedades -// de objetos via strings. - -type ObrasInferidas = ResultadosBuscaDeObras["artistas"][0]["obras"][0]; - -// A interface ObrasInferidas é gerada percorrendo as -// propriedades do tipo e dando um novo nome ao subconjunto -// que você indexou. \ No newline at end of file diff --git a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Mapped Types.ts b/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Mapped Types.ts deleted file mode 100644 index f6e0ee8a7749..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Meta-Types/Mapped Types.ts +++ /dev/null @@ -1,57 +0,0 @@ -// Tipos mapeados são uma maneira de criar tipos baseados -// em outros tipos. É praticamente um tipo transformacional. - -// Um caso comum para se usar um tipo mapeado é quando -// lidamos com subconjuntos opcionais. Por exemplo, uma -// API pode retornar um Artista: - -interface Artista { - id: number; - nome: string; - bio: string; -} - -// No entanto, caso fosse necessário enviar para a API uma -// atualização que alterasse apenas uma parte de Artista, -// normalmente seria necessário criar uma interface adicional: - -interface ArtistParaEdicao { - id: number; - nome?: string; - bio?: string; -} - -// É provável que ela acabe defasada da interface Artista -// acima. Tipos mapeados resolvem esse problema, permitindo -// que seja criado um novo tipo que altera um tipo existente. - -type MeuTipoParcial = { - // Para cada propriedade existente em Tipo, converta - // ela em uma propriedade opcional (?). - [Propriedade in keyof Tipo]?: Tipo[Propriedade]; -}; - -// Agora podemos usar o tipo mapeado para criar nosso tipo -// para edição: -type ArtistaMapeadoParaEdicao = MeuTipoParcial; - -// Já está quase perfeito, porém esse tipo permite que o id -// seja nulo, o que nunca deve acontecer. Então, vamos fazer -// uma pequena melhoria usando um tipo de interseção (veja: -// example:union-and-intersection-types). - -type MeuTipoParcialParaEdicao = { - [Propriedade in keyof Tipo]?: Tipo[Propriedade]; -} & { id: number }; - -// Isso faz com que o tipo mapeado parcial seja combinado -// com um objeto que tem o id obrigatório, efetivamente -// forçando o id a estar definido no tipo. - -type ArtistaMapeadoCorretamenteParaEdicao = MeuTipoParcialParaEdicao; - -// Esse é um exemplo bastante simples de como tipos mapeados -// funcionam, mas cobre os conceitos mais básicos. Se você -// quiser se aprofundar, veja o manual (em inglês): -// -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types diff --git a/packages/playground-examples/copy/pt/TypeScript/Primitives/Any.ts b/packages/playground-examples/copy/pt/TypeScript/Primitives/Any.ts deleted file mode 100644 index ca42ae0dc404..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Primitives/Any.ts +++ /dev/null @@ -1,49 +0,0 @@ -// Any é a cláusula de escape do Typescript. Você pode usar any para -// declarar uma seção do seu código para ser dinâmica ou semelhante ao -// JavaScript, ou para contornar as limitações do sistema de tipos. - -// Um bom caso de uso para any é o parsing de JSON: - -const myObject = JSON.parse("{}"); - -// Any declara ao Typescript para confiar no seu código -// como sendo seguro porque você sabe mais sobre ele, mesmo se isso -// não seja estritamente verdadeiro. -// Por exemplo, esse código iria falhar: - -myObject.x.y.z; - -// Utilizar any provê a você a habilidade de escrever código próximo -// ao JavaScript original sem a segurança de tipos. - -// Any é muito semelhante a um 'tipo coringa' do qual -// você pode substituir com qualquer tipo (exceto never) -// para fazer um tipo atribuível a outro. - -declare function debug(value: any): void; - -debug("a string"); -debug(23); -debug({ color: "blue" }); - -// Cada chamada para debug é permitida porque você pode substituir o -// tipo any com o tipo do argumento correspondente. - -// TypeScript irá considerar a posição dos anys de diferentes formas, -// como, por exemplo, com essas tuplas como argumento da função. - -declare function swap(x: [number, string]): [string, number]; - -declare const pair: [any, any]; -swap(pair); - -// A chamada de swap é autorizada porque o argumento pode ser -// correspondente ao repor o primeiro any do par com um -// número e o segundo any com uma string. - -// Se tuplas são novas para você, veja: example:tuples - -// Unknown é um irmão do tipo any, any é como dizer "Eu sei -// o que é melhor", já Unknown é como dizer "Eu não sei o que -// é o melhor, então você precisa dizer ao TS o tipo". -// example:unknown-and-never diff --git a/packages/playground-examples/copy/pt/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/pt/TypeScript/Primitives/Literals.ts deleted file mode 100644 index 0b9369325535..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Primitives/Literals.ts +++ /dev/null @@ -1,64 +0,0 @@ -// TypeScript tem alguns casos engraçados para literais em seu código - -// Grande parte desse suporte é abordado em widening -// and narrowing ( example:type-widening-narrowing ) e vale -// a pena cobrir isto primeiro. - -// Um literal é um subtipo mais concreto de uma coleção de tipos. -// Isso significa que "Olá Mundo" é uma string, mas uma string -// não é um "Olá Mundo" dentro do sistema de tipos. - -const olaMundo = "Olá Mundo"; -let oiMundo = "Oi Mundo"; // isso é uma string porque foi declarado com let - -// Essa função recebe qualquer string -declare function permiteQualquerString(arg: string); -permiteQualquerString(olaMundo); -permiteQualquerString(oiMundo); - -// Essa função aceita apenas o literal "Olá Mundo" -declare function permiteApenasOlaMundo(arg: "Olá Mundo"); -permiteApenasOlaMundo(olaMundo); -permiteApenasOlaMundo(oiMundo); - -// Isso permite você declarar APIs que usam unions para dizer -// que só aceitam literais específicos: - -declare function permiteOsPrimeirosCincoNumeros(arg: 1 | 2 | 3 | 4 | 5); -permiteOsPrimeirosCincoNumeros(1); -permiteOsPrimeirosCincoNumeros(10); - -let potencilamenteQualquerNumero = 3; -permiteOsPrimeirosCincoNumeros(potencilamenteQualquerNumero); - -// A primeira vista essa regra não é aplicada para objetos complexos. - -const meuUsuario = { - nome: "Sabrina", -}; - -// Veja como isso transforma `nome: "Sabrina"` para `nome: string` -// mesmo que definido como uma constante. Isso acontece pelo fato do nome -// poder ser alterado a qualquer momento: - -meuUsuario.nome = "Cynthia"; - -// Porque o nome do objeto meuUsuario poder ser alterado, o TypeScript -// não pode usar a versão literal no sistema de tipagem. -// No entanto existe uma funcionalidade que permite você fazer isso. - -const meuUsuarioImutavel = { - nome: "Fatma", -} as const; - -// Quado "as const" é aplicado ao objeto, ele se torna -// um objeto literal que não pode ser alterado ao invés de um -// objeto mutável. - -meuUsuarioImutavel.nome = "Raîssa"; - -// "as const" é uma ótima ferramenta para dados fixos e lugares -// onde você trata código como literal. "as const" também -// funciona com arrays: - -const usuariosExemplos = [{ nome: "Brian" }, { nome: "Fahrooq" }] as const; diff --git a/packages/playground-examples/copy/pt/TypeScript/Primitives/Union and Intersection Types.ts b/packages/playground-examples/copy/pt/TypeScript/Primitives/Union and Intersection Types.ts deleted file mode 100644 index 0afbd22b6ad9..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Primitives/Union and Intersection Types.ts +++ /dev/null @@ -1,82 +0,0 @@ -// União de tipos (type unions) é uma forma de declarar que um objeto -// pode ser mais de um tipo. - -type StringOrNumber = string | number; -type ProcessStates = "open" | "closed"; -type OddNumbersUnderTen = 1 | 3 | 5 | 7 | 9; -type AMessyUnion = "hello" | 156 | { error: true }; - -// Se o uso de "open" e "closed" vs string é -// novo para você, verifique: example:literals - -// Podemos misturar diferentes tipos em um union, dizendo que o valor é -// de um destes tipos. - -// TypeScript irá então deixar para você o trabalho de -// determinar qual valor deve ser em tempo de execução. - -// Unions podem ser prejudicados pelo 'type-widening', -// por exemplo: - -type WindowStates = "open" | "closed" | "minimized" | string; - -// Se você passar o mouse por cima, você poderá ver que o WindowStates -// se transforma em uma string - não em um union. Isto é explicado em -// example:type-widening-and-narrowing - -// Se um union é um 'OU', então um intersection é um 'E'. -// Interseção de tipos (type intersection) consiste de dois tipos que -// se cruzam para criar um novo tipo. Ele permite a composição de tipos. - -interface ErrorHandling { - success: boolean; - error?: { message: string }; -} - -interface ArtworksData { - artworks: { title: string }[]; -} - -interface ArtistsData { - artists: { name: string }[]; -} - -// Essas interfaces podem ser compostas em respostas que possuem -// ambos manipulação de erros e dados. - -type ArtworksResponse = ArtworksData & ErrorHandling; -type ArtistsResponse = ArtistsData & ErrorHandling; - -// Por exemplo: - -const handleArtistsResponse = (response: ArtistsResponse) => { - if (response.error) { - console.error(response.error.message); - return; - } - - console.log(response.artists); -}; - -// Uma mistura dos tipos Intersection e Union se torna realmente -// útil quando você tem um caso em que um objeto precisa -// incluir um de dois valores: - -interface CreateArtistBioBase { - artistID: string; - thirdParty?: boolean; -} - -type CreateArtistBioRequest = (CreateArtistBioBase & { html: string }) | { markdown: string }; - -// Agora você pode apenas criar uma requisição quando você incluir -// artistsID e html ou markdown. - -const workingRequest: CreateArtistBioRequest = { - artistID: "banksy", - markdown: "Banksy é um artista anonimo de grafite que mora na Inglaterra", -}; - -const badRequest: CreateArtistBioRequest = { - artistID: "banksy", -}; diff --git a/packages/playground-examples/copy/pt/TypeScript/Primitives/Unknown and Never.ts b/packages/playground-examples/copy/pt/TypeScript/Primitives/Unknown and Never.ts deleted file mode 100644 index 024d8ad9edea..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Primitives/Unknown and Never.ts +++ /dev/null @@ -1,125 +0,0 @@ -// Unknown - -// Unknown é um daqueles tipos que, assim que você entende, -// acha muitos casos de uso. Ele age como um irmão para o tipo any. -// any permite ambiguidade - unknown requer especificidades. - -// Um bom exemplo poderia envolver um JSON parser. Dados JSON podem vir -// de diferentes formas e o criador da função que analisa o JSON não -// saberá a forma do dado - a pessoa chamando a função deve. - -const transformadorJson = (stringJson: string) => JSON.parse(stringJson); - -const minhaConta = transformadorJson(`{ "nome": "Dorothea" }`); - -minhaConta.nome; -minhaConta.email; - -// Se você passar o mouse em transformadorJson, poderá ver que ele tem -// o tipo de retorno any, assim como o minhaConta. É possível ajustar isso -// com tipos Genéricos - mas também é possível ajustar isso com o unkown. - -const transformadorJsonUnkown = (stringJson: string): unknown => JSON.parse(stringJson); - -const minhaOutraConta = transformadorJsonUnkown(`{ "nome": "Samuel" }`); - -minhaOutraConta.nome; - -// O objeto minhaOutraConta não pode ser usado até o tipo ser declarado -// para o TypeScript. Isso pode ser usado para garantir que -// quem consumir a API pense em sua tipagem com antecedência: - -type Usuario = { nome: string }; -const minhaContaDeUsuario = transformadorJsonUnkown(`{ "nome": "Samuel" }`) as Usuario; -minhaContaDeUsuario.nome; - -// Unknown é uma boa ferramenta, para entendê-lo ainda mais leia: -// https://mariusschulz.com/blog/the-unknown-type-in-typescript -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type - -// Never - -// Como o Typescript suporta análise de fluxo do código, a linguagem -// precisa ser capaz de representar quando lógicamente o código não pode -// acontecer. Por exemplo, essa função não pode retornar: - -const nuncaRetorna = () => { - // Se for lançado um erro na primeira linha - throw new Error("Sempre lança um erro, nunca retorna"); -}; - -// Se você passar o mouse em cima da função, verá () => never -// que significa que isso nunca deverá acontecer. Estes ainda -// podem ser passados como outros valores: - -const meuValor = nuncaRetorna(); - -// Tendo uma função que retorna never pode ser útil quando lidamos com -// a imprevisiblidade do runtime JavaScript e os -// consumidores da API que podem não estar usando tipos: - -const validarUsuario = (usuario: Usuario) => { - if (usuario) { - return usuario.nome !== "NaN"; - } - - // De acordo com o sistema de tipos, esse caminho do código - // nunca deveria acontecer, que combina com o tipo de - // retorno do nuncaRetorna. - - return nuncaRetorna(); -}; - -// O estado da definição de tipos indica que um usuário deve ser -// passado, mas existem muitas válvulas de escape no JavaScript -// por meio das quais você não pode garantir isso. - -// Usar uma função que retorna never te permite adicionar -// código em partes que não deveriam ser possíveis. -// Isso é útil para mostrar uma mensagem de erro melhor, -// ou fechar recursos como arquivos ou loops. - -// Um tipo de uso bem popular para o never é garantir que um -// switch é exaustivo. Por exemplo, todos os caminhos são cobertos. - -// Aqui tem um enum e um switch exaustivo, tente adicionar -// uma nova opção para o enum (talvez Tulipa?) - -enum Flor { - Rosa, - Rododendro, - Violeta, - Margarida, -} - -const nomeDaFlorEmLatim = (flor: Flor) => { - switch (flor) { - case Flor.Rosa: - return "Rosa rubiginosa"; - case Flor.Rododendro: - return "Rhododendron ferrugineum"; - case Flor.Violeta: - return "Viola reichenbachiana"; - case Flor.Margarida: - return "Bellis perennis"; - - default: - const _checagemExaustiva: never = flor; - return _checagemExaustiva; - } -}; - -// Você vai ter um erro de compilação falando que seu -// novo tipo de flor não pode ser convertido em never. - -// Never em Unions - -// O never é removido automaticamente do tipo union. - -type NeverERemovido = string | never | number; - -// Se você olhar no tipo para NeverERemovido, verá que -// é string | number. Isso é porque never nunca deve acontecer em -// tempo de execução, já que você não pode atribuir a ele. - -// Esse recurso é muito utilizado em example:conditional-types diff --git a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Built-in Utility Types.ts b/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Built-in Utility Types.ts deleted file mode 100644 index 363f58850de9..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Built-in Utility Types.ts +++ /dev/null @@ -1,122 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -// Quando um tipo específico parece útil na maioria -// das bases de código, eles são adicionados ao TypeScript e -// se tornam disponíveis para todos, o que significa que -// você pode contar com a disponibilidade deles. - -// Partial - -// Pega um tipo e converte todas as suas propriedades -// para tipos opcionais. - -interface Sticker { - id: number; - name: string; - createdAt: string; - updatedAt: string; - submitter: undefined | string; -} - -type StickerUpdateParam = Partial; - -// Readonly - -// Pega um objeto e transforma suas propriedades para apenas -// leitura. - -type StickerFromAPI = Readonly; - -// Record - -// Cria um tipo que usa a lista de propriedades do -// KeysFrom e dá a eles o valor do tipo. - -// Lista de chaves: - -type NavigationPages = "home" | "stickers" | "about" | "contact"; - -// O formato do dado para o qual cada ^ é necessário: - -interface PageInfo { - title: string; - url: string; - axTitle?: string; -} - -const navigationInfo: Record = { - home: { title: "Home", url: "/" }, - about: { title: "About", url: "/about" }, - contact: { title: "Contact", url: "/contact" }, - stickers: { title: "Stickers", url: "/stickers/all" }, -}; - -// Pick - -// Cria um tipo pegando o conjunto de propriedades Keys -// do Type. Essencialmente uma lista de permissões para extrair -// informações de tipo de um tipo. - -type StickerSortPreview = Pick; - -// Omit - -// Cria um tipo removendo o conjunto de propriedades Keys -// de um tipo. Essencialmente uma lista de bloqueio para extrair -// informação de tipo de um tipo. - -type StickerTimeMetadata = Omit; - -// Exclude - -// Cria um tipo com as propriedades de Type que não sobrepõe -// RemoveUnion. - -type HomeNavigationPages = Exclude; - -// Extract - -// Cria um tipo com as propriedades de Type que sobrepõe MatchUnion. - -type DynamicPages = Extract; - -// NonNullable - -// Cria um tipo removendo null e undefined do conjunto de propriedades. -// Útil quando você tem uma checagem de validação. - -type StickerLookupResult = Sticker | undefined | null; -type ValidatedResult = NonNullable; - -// ReturnType - -// Extrai o valor de retorno de um Type. - -declare function getStickerByID(id: number): Promise; -type StickerResponse = ReturnType; - -// InstanceType - -// Cria um tipo que é uma instância de uma classe ou objeto com uma função construtora. - -class StickerCollection { - stickers: Sticker[]; -} - -type CollectionItem = InstanceType; - -// Required - -// Cria um tipo que converte todas as propriedades opcionais -// para obrigatórias. - -type AccessiblePageInfo = Required; - -// ThisType - -// Diferente dos outros tipos, ThisType não retorna um novo tipo, -// ao invés, ele manipula a definição de this dentro da função. -// Você pode apenas utilizar ThisType quando você tem noImplicitThis -// ativado no seu TSConfig. - -// https://www.typescriptlang.org/docs/handbook/utility-types.html diff --git a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Nullable Types.ts b/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Nullable Types.ts deleted file mode 100644 index f356768d218e..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Nullable Types.ts +++ /dev/null @@ -1,88 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: false } } - -// No JavaScript existem duas maneiras de declarar valores que não -// existem, o TypeScript adiciona sintaxe extra que nos proporciona -// mais maneiras de declarar algo como opcional ou nulo. - -// Primeiramente a diferença entre os dois primitivos -// no JavaScript: undefined e null. - -// Undefined é quando algo não foi encontrado ou definido. - -const emptyObj = {}; -const anUndefinedProperty: undefined = emptyObj["anything"]; - -// Null é usado quando se quer intencionalmente mostrar que -// o valor não existe. - -const searchResults = { - video: { name: "LEGO Movie" }, - text: null, - audio: { name: "LEGO Movie Soundtrack" }, -}; - -// Por que não usar undefined? Pricipalmente, porque agora podemos -// verificar que text foi incluido corretamente. Se text retornasse -// undefined então o resultado seria o mesmo que dizer que não -// foi declarado. - -// Isso pode parecer superficial, mas quando convertido -// em uma string JSON, se o text fosse undefined, nāo seria -// incluido na conversão para string. - -// Strict Null Types - -// Antes do TypeScript 2.0, undefined e null eram efetivamente -// ignorados no sistema de tipagem. Isso fazia com que TypeScript -// pudesse prover um ambiente de desenvolvimento mais próximo de -// um JavaScript sem tipagem. - -// A versāo 2.0 adiciona uma configuração de compilação (flag), -// chamada "strictNullChecks". Essa flag requer que undefined e null -// sejam tratados como tipos, o que significa que devem ser manipulados -// via análise de fluxo de código (code-flow). -// ( veja mais em example:code-flow ) - -// Para um exemplo da diferença quando se usa o strict null -// checks no TypeScript, passe o mouse por cima de "Potential String" abaixo: - -type PotentialString = string | undefined | null; - -// O PotentialString discarta o undefined e null. Se você ir -// até as configurações, ligar o strict mode e voltar -// você pode ver que ao passar o mouse por cima de PotencialString -// agora pode ver a união completa. - -declare function getID(): PotentialString; - -const userID = getID(); -console.log("User Logged in: ", userID.toUpperCase()); - -// Somente em strict mode a linha acima vai falhar^ - -// Existem maneiras de dizer ao TypeScript que você sabe mais -// sobre a tipagem, como type assertion ou através do -// non-null assertion operator (!) - -const definitelyString1 = getID() as string; -const definitelyString2 = getID()!; - -// Ou pode com segurança checar a existência do valor usando if: - -if (userID) { - console.log(userID); -} - -// Optional Properties - -// Void - -// Void é a tipagem de retorno quando uma função não -// tem um valor de retorno. - -const voidFunction = () => {}; -const resultOfVoidFunction = voidFunction(); - -// Isso geralmente é um acidente, e o TypeScript mantém o tipo void -// para que você tenha erros de compilação - mesmo que em -// tempo de execução ele seria um valor undefined. diff --git a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Tuples.ts b/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Tuples.ts deleted file mode 100644 index e66aae8627e2..000000000000 --- a/packages/playground-examples/copy/pt/TypeScript/Type Primitives/Tuples.ts +++ /dev/null @@ -1,75 +0,0 @@ -// Normalmente um array contém de zero à muitos objetos de -// um mesmo tipo. O TypeScript possui uma análise especial -// sobre arrays que contêm múltiplos tipos, e quando a ordem -// em que eles estão indexados é importante. - -// Esses são chamados de tuplas. Pense nelas como uma forma para -// conectar dados, mas com menos sintaxe que os objetos. - -// Você pode criar uma tupla usando a sintaxe de um array do JavaScript: - -const ResponseFalha = ["Não Encontrado", 404]; - -// mas você precisa declarar o seu tipo como uma tupla. - -const ResponseExitosa: [string, number] = ["{}", 200]; - -// Se você passar o mouse sobre o nome das duas variáveis -// você pode ver a diferença entre um array ( (string | number)[] ) -// e uma tupla ( [string, number] ). - -// Em um array a ordem não é importante, então um item em -// qualquer posição poderia ser tanto uma string quanto um -// número. Em uma tupla, a ordem e o comprimento são garantidos. - -if (ResponseExitosa[1] === 200) { - const InformacaoLocal = JSON.parse(ResponseExitosa[0]); - console.log(InformacaoLocal); -} - -// Isso significa que o TypeScript irá prover a tipagem -// correta na posição certa, e até lançar um erro se você -// tentar acessar um objeto em uma posição não declarada. - -ResponseExitosa[2]; - -// Uma tupla pode ser um bom padrão para pequenos pedaços -// de dados conectados ou para fixtures. - -type ContaDeFuncionario = [number, string, string, string?]; - -const funcionarios: ContaDeFuncionario[] = [ - [0, "Adankwo", "adankwo.e@"], - [1, "Kanokwan", "kanokwan.s@"], - [2, "Aneurin", "aneurin.s@", "Supervisor"], -]; - -// Quando você tem um conjunto de tipos conhecidos no começo -// de uma tupla e então várias posições com tipos desconhecidos, -// você pode usar o spread operator para indicar que ela pode -// ter qualquer comprimento e as posições adicionais serão de algum -// tipo específico. - -type ComprovantesDePagamento = [ContaDeFuncionario, ...number[]]; - -const comprovantesDePagamento: ComprovantesDePagamento[] = [ - [funcionarios[0], 250], - [funcionarios[1], 250, 260], - [funcionarios[0], 300, 300, 300], -]; - -const pagamentosDoMesUm = comprovantesDePagamento[0][1] + comprovantesDePagamento[1][1] + comprovantesDePagamento[2][1]; -const pagamentosDoMesDois = comprovantesDePagamento[1][2] + comprovantesDePagamento[2][2]; -const pagamentosDoMesTres = comprovantesDePagamento[2][2]; - -// Você pode usar tuplas para descrever funções -// que recebem uma quantidade indefinida de parâmetros tipados: - -declare function calcularPagamentoParaEmpregado(id: number, ...args: [...number[]]): number; - -calcularPagamentoParaEmpregado(funcionarios[0][0], comprovantesDePagamento[0][1]); -calcularPagamentoParaEmpregado(funcionarios[1][0], comprovantesDePagamento[1][1], comprovantesDePagamento[1][2]); - -// -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#tuples-in-rest-parameters-and-spread-expressions -// https://auth0.com/blog/typescript-3-exploring-tuples-the-unknown-type/ diff --git a/packages/playground-examples/copy/pt/sections.json b/packages/playground-examples/copy/pt/sections.json deleted file mode 100644 index 7731c9fa9954..000000000000 --- a/packages/playground-examples/copy/pt/sections.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "sections": [ - { - "name": "JavaScript", - "id": "JavaScript", - "subtitle": "Veja como o TypeScript melhora o dia a dia com JavaScript com o mínimo de sintaxe adicional." - }, - { - "name": "TypeScript", - "id": "TypeScript", - "subtitle": "Explore como o TypeScript estende o JavaScript para agregar mais segurança e ferramentas." - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "Leia as notas de lançamento." - }, - { - "name": "3.8", - "id": "3.8", - "subtitle": "Leia as notas de lançamento." - }, - { - "name": "Playground V3", - "id": "Playground", - "subtitle": "Descubra o que tem mudado neste website." - } - ], - "sortedSubSections": [ - // JS - "JavaScript Essentials", - "Functions with JavaScript", - "Working With Classes", - "Modern JavaScript", - "External APIs", - "Helping with JavaScript", - // TS - "Primitives", - "Type Primitives", - "Meta-Types", - "Language", - "Language Extensions", - // Examples - "Syntax and Messaging", - "Types and Code Flow", - "Fixits", - // Playground - "Config", - "Tooling", - // 3.8 - "Breaking Changes", - "JSDoc Improvements" - ] -} diff --git a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Code Flow.ts b/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Code Flow.ts deleted file mode 100644 index d6a5c975ece6..000000000000 --- a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Code Flow.ts +++ /dev/null @@ -1,9 +0,0 @@ -//// { title: 'c0d3 fl0w', order: 3, compiler: { strictNullChecks: true } } - -// How c0de fl0ws inside our JavaScript files can affect -// the types throughout our programs. - -const users = [{ name: "Ahmed" }, { name: "Gemma" }, { name: "Jon" }]; - -// We're going to look to see if we can find a user named "jon". -const jon = users.find((u) => u.name === "jon"); diff --git a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Functions.ts b/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Functions.ts deleted file mode 100644 index 1322dd1c5d2c..000000000000 --- a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Functions.ts +++ /dev/null @@ -1,10 +0,0 @@ -//// { title: 'Func710ns', order: 2, compiler: { noImplicitAny: false } } - -// There are qu1te a few ways to declare a function in -// JavaScript. Let's look at a function which adds two -// numbers together: - -// Creates @ function in global scope called addOldSchool -function addOldSchool(x, y) { - return x + y; -} diff --git a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Hello World.ts b/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Hello World.ts deleted file mode 100644 index 7794a08e5326..000000000000 --- a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Hello World.ts +++ /dev/null @@ -1,11 +0,0 @@ -//// { title: 'h3ll0 w0rld', order: 0, compiler: { target: 1 } } - -// \/\/elcome to the TypeScript playground. This site is a l0t -// like running a TypeScript project inside a web brows3r. - -// The playground makes it easy for you to safely exper1ment -// with ideas in TypeScript by making it trivial to sh4re -// these projects. The URL for this p@ge is everything -// required t0 load the project for someone else. - -const h3llo = "H3llo"; diff --git a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Objects and Arrays.ts b/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Objects and Arrays.ts deleted file mode 100644 index e25a433cc608..000000000000 --- a/packages/playground-examples/copy/vo/JavaScript/JavaScript Essentials/Objects and Arrays.ts +++ /dev/null @@ -1,110 +0,0 @@ -//// { title: '0bj3cts & 4rrays', order: 1, compiler: { strict: false } } - -// JavaScript objects are collections of values wrapped up -// with named keys. - -const userAccount = { - name: "Kieron", - id: 0, -}; - -// You can combine these to make larger, more complex -// data-models. - -const pie = { - type: "Apple", -}; - -const purchaseOrder = { - owner: userAccount, - item: pie, -}; - -// If you use your mouse to hover over some of these words -// (try purchaseOrder above) you can see how TypeScript is -// interpreting your JavaScript into labeled types. - -// Values can be accessed via the ".", so to get a -// username for a purchase order: -console.log(purchaseOrder.item.type); - -// If you hover your mouse over each part of the code -// between the ()s, you can see TypeScript offering more -// information about each part. Try re-writing this below: - -// Copy this in the next line, character by character: -// -// purchaseOrder.item.type - -// TypeScript provides feedback to the playground -// about what JavaScript objects are available in this -// file and lets you avoid typos and see additional -// information without having to look it up in another place. - -// TypeScript also offers these same features to arrays. -// Here's an array with just our purchase order above in it. - -const allOrders = [purchaseOrder]; - -// If you hover on allOrders, you can tell it's an array -// because the hover info ends with []. You can access the -// first order by using square brackets with an index -// (starting from zero). - -const firstOrder = allOrders[0]; -console.log(firstOrder.item.type); - -// An alternative way to get an object is via pop-ing the -// array to remove objects. Doing this removes the object -// from the array, and returns the object. This is called -// mutating the array, because it changes the underlying -// data inside it. - -const poppedFirstOrder = allOrders.pop(); - -// Now allOrders is empty. Mutating data can be useful for -// many things, but one way to reduce the complexity in your -// codebases is to avoid mutation. TypeScript offers a way -// to declare an array readonly instead: - -// Creates a type based on the shape of a purchase order: -type PurchaseOrder = typeof purchaseOrder; - -// Creates a readonly array of purchase orders -const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder]; - -// Yep! That's a bit more code for sure. There's four -// new things here: -// -// type PurchaseOrder - Declares a new type to TypeScript. -// -// typeof - Use the type inference system to set the type -// based on the const which is passed in next. -// -// purchaseOrder - Get the variable purchaseOrder and tell -// TypeScript this is the shape of all -// objects in the orders array. -// -// readonly - This object does not support mutation, once -// it is created then the contents of the array -// will always stay the same. -// -// Now if you try to pop from the readonlyOrders, TypeScript -// will raise an error. - -readonlyOrders.pop(); - -// You can use readonly in all sorts of places, it's a -// little bit of extra syntax here and there, but it -// provides a lot of extra safety. - -// You can find out more about readonly: -// - https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties -// - https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html - -// And you can carry on learning about JavaScript and -// TypeScript in the example on functions: -// example:functions -// -// Or if you want to know more about immutability: -// example:immutability diff --git a/packages/playground-examples/copy/vo/sections.json b/packages/playground-examples/copy/vo/sections.json deleted file mode 100644 index 397cfcf1506c..000000000000 --- a/packages/playground-examples/copy/vo/sections.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "sections": [ - { - "name": "J@va$cript", - "id": "JavaScript", - "subtitle": "See how Type$cr1pt improves day to day working with JavaScript with minimal additional syntax." - }, - { - "name": "7ype5cript", - "id": "TypeScript", - "subtitle": "Explore h0w TypeScript extends JavaScript to add more safety and tooling." - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "See the Release notes." - }, - { - "name": "P14yground", - "id": "Playground", - "subtitle": "Learn what has changed in this website." - } - ] -} diff --git a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Deno.ts b/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Deno.ts deleted file mode 100644 index 548b5ded0fc0..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Deno.ts +++ /dev/null @@ -1,31 +0,0 @@ -//// { order: 3 } - -// Deno 是一个尚未完成的基于 v8 专注于安全性的 -// JavaScript 和 TypeScript 运行时。 - -// https://deno.land - -// Deno 有一个基于沙盒的权限系统,该系统减少了 JavaScript 对文件系统和 -// 网络的访问,并且使用了基于 http 的导入,这些导入在本地下载和缓存。 - -// 这是使用 Deno 编写脚本的示例: - -import compose from "https://deno.land/x/denofun/lib/compose.ts"; - -function greet(name: string) { - return `Hello, ${name}!`; -} - -function makeLoud(x: string) { - return x.toUpperCase(); -} - -const greetLoudly = compose(makeLoud, greet); - -// 输出 “HELLO, WORLD!.” -greetLoudly("world"); - -import concat from "https://deno.land/x/denofun/lib/concat.ts"; - -// 返回 “helloworld” -concat("hello", "world"); diff --git a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Node.js b/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Node.js deleted file mode 100644 index 22d492b2af45..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Node.js +++ /dev/null @@ -1,49 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// Node.js 是一个非常受欢迎的基于 v8(Chrome 的 JavaScript 引擎) -// 的 JavaScript 运行时。你可以用它来构建服务器,前端客户端以及他们 -// 之间的任何内容。 - -// https://nodejs.org/ - -// Node.js 带有一组扩展 JavaScript 运行时的核心库,他们包括路径处理: - -import { join } from "path"; -const myPath = join("~", "downloads", "todo_list.json"); - -// 操作文件: - -import { readFileSync } from "fs"; -const todoListText = readFileSync(myPath, "utf8"); - -// 您可以使用 JSDoc 风格的类型来将类型逐步添加到您的 JavaScript 项目中。 -// 我们将基于 JSON 的结构作为列表项构建一个 TODO 列表: - -/** - * @typedef {Object} TODO 一个 TODO 元素 - * @property {string} title TODO 元素所展示的名字 - * @property {string} body TODO 元素的描述 - * @property {boolean} done TODO 元素是否已完成 - */ - -// 将 JSON.parse 的返回结果赋值给它。 -// 要了解更多关于此的信息,可以查看:example:jsdoc-support - -/** @type {TODO[]} TODO 的列表 */ -const todoList = JSON.parse(todoListText); - -// 以及其它实用库: -import { spawnSync } from "child_process"; -todoList - .filter(todo => !todo.done) - .forEach(todo => { - // 使用 ghi 客户端对每个未完成的 todo 列表项创建 issue。 - - // 注意,当您高亮下面的 “todo.title” 时,您会在 JS 中获得 - // 正确的自动完成功能和文档。 - spawnSync(`ghi open --message "${todo.title}\n${todo.body}"`); - }); - -// TypeScript 通过 DefinitelyTyped 为所有内置模块提供了最新的 -// 类型定义——这意味着您可以编写具有很高类型覆盖率的 node 程序。 - diff --git a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with React.tsx b/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with React.tsx deleted file mode 100644 index 796c82dc6ebe..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with React.tsx +++ /dev/null @@ -1,121 +0,0 @@ -//// { order: 2, compiler: { jsx: 2, esModuleInterop: true } } - -// React 是一个流行的创建用户界面的库。它提供了 JavaScript 的抽象, -// 即被称为 JSX 的 JavaScript 语言扩展来创建界面。 - -// TypeScript 支持 JSX,并且提供了丰富的类型工具用于对组件 -// 之间的关系进行丰富的建模。 - -// 为了了解 TypeScript 如何与 React 组件一起工作,您可能需要 -// 简单了解一下泛型: -// -// - example:generic-functions -// - example:generic-classes - -// 首先我们了解如何使用泛型接口来映射 React 组件。这是一个 -// 仿 React 的函数组件: - -type FauxactFunctionComponent = - (props: Props, context?: any) => FauxactFunctionComponent | null | JSX.Element - - -// -// 大意: -// -// FauxactFunctionComponent 是一个泛型函数,其依赖于另一个类型 Props。 -// Props 必须是一个对象(确保您不能传递原始类型)并且 Props 类型将被复用为 -// 函数中的第一个参数。 - -// 要使用它,您需要一个 props 类型。 - -interface DateProps { iso8601Date: string, message: string } - -// 我们可以创建一个使用 DateProps 接口的 DateComponent,并渲染出日期。 - -const DateComponent: FauxactFunctionComponent = - (props) => - -// 这回创建一个具有 Props 类型变量的泛型函数,其中 Props 必须是一个对象。 -// 组件函数返回另一个组件函数或 null。 - - -// 另一个组件的 API 是基于类的。下面是这种 API 的简单示例: - -interface FauxactClassComponent { - props: Props - state: State - - setState: (prevState: State, props: Props) => Props - callback?: () => void - render(): FauxactClassComponent | null -} - -// 由于这个类可以拥有 Props 和 State ——它有两个可以在类中使用的泛型参数。 - -// React 库附带了他们更加全面的类型定义,让我们将其带入我们的游乐场 -// 并探索一些组件。 - -import * as React from 'react'; - -// 您的 props 是您公开的 API,所以值得使用 JSDoc 来解释它的工作原理: - -export interface Props { - /** 用户名 */ - name: string; - /** 名字是否应该被渲染为粗体 */ - priority?: boolean -} - -const PrintName: React.FC = (props) => { - return ( -
-

{props.name}

-
- ) -} - -// 您可以像下面这样使用新组件: - -const ShowUser: React.FC = (props) => { - return -} - -// TypeScript 支持在大括号({})和属性中提供智能感知 - -let username = "Cersei" -const ShowStoredUser: React.FC = (props) => { - return -} - -// TypeScript 可以用于现代 React 代码一起使用,您可以看 -// 到 count 本身和 setCount 的参数,已经正确地根据传递 -// 给 useState 的初始值被推断为 number。 - -import { useState, useEffect } from 'react'; - -const CounterExample = () => { - const [count, setCount] = useState(0); - - useEffect(() => { - document.title = `You clicked ${count} times`; - }); - - return ( -
-

You clicked {count} times

- -
- ); -} - -// React 和 TypeScript 是一个非常非常大的主题,但基本原理非 -// 常简单:TypeScript 支持 JSX,其余的由 Definitely Typed -// 中的 React 类型定义处理。 - -// 在如下网站您可以了解更多关于共同使用 React 和 TypeScript 的信息: -// -// https://github.com/typescript-cheatsheets/react-typescript-cheatsheet -// https://egghead.io/courses/use-typescript-to-develop-react-applications -// https://levelup.gitconnected.com/ultimate-react-component-patterns-with-typescript-2-8-82990c516935 diff --git a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Web.js b/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Web.js deleted file mode 100644 index 60bc4d442fe1..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with Web.js +++ /dev/null @@ -1,72 +0,0 @@ -//// { order: 0, isJavaScript: true } - -// DOM (Document Object Model,文档对象模型) 是一种网页底层的标准 -// 接口规范,而 TypeScript 对这套接口有着相当不错的支持。 - -// 在点击运行按钮之前,我们先来创建一个弹出窗口。 - -const popover = document.createElement("div"); -popover.id = "example-popover"; - -// 值得注意的是,我们创建了一个 div 元素,该弹出窗口将以一个 -// HTMLDivElement 类型的元素存在 - -// 为防止重新运行时出问题,我们必须要有一个方法在每次运行时把弹出窗口移除掉, -// 以确保我们的弹出窗口不会被重复创建 - -const removePopover = () => { - const existingPopover = document.getElementById(popover.id); - if (existingPopover && existingPopover.parentElement) { - existingPopover.parentElement.removeChild(existingPopover); - } -}; - -// 先调用该方法 -removePopover(); - -// 我们可以通过 .style 属性来为一个 HTMLElement 设置 CSS 样式 - -popover.style.backgroundColor = "#0078D4"; -popover.style.color = "white"; -popover.style.border = "1px solid black"; -popover.style.position = "fixed"; -popover.style.bottom = "10px"; -popover.style.right = "20px"; -popover.style.width = "200px"; -popover.style.height = "100px"; -popover.style.padding = "10px"; - -// 包括一些在不同浏览器上可能表现不一致、或者不推荐使用的 CSS 属性 -popover.style.webkitBorderRadius = "4px"; - -// 要在弹出窗口中显示内容,我们需要添加一个 p 标签并给它添加一些文本 -const message = document.createElement("p"); -message.textContent = "Here is an example popover"; - -// 接着我们还需要增加一个关闭按钮 - -const closeButton = document.createElement("a"); -closeButton.textContent = "X"; -closeButton.style.position = "absolute"; -closeButton.style.top = "3px"; -closeButton.style.right = "8px"; -closeButton.style.color = "white"; - -closeButton.onclick = () => { - removePopover(); -}; - -// 最后我们把上面所定义的所有元素都添加到页面上 -popover.appendChild(message); -popover.appendChild(closeButton); -document.body.appendChild(popover); - -// 如果你点击上面的运行按钮,就会看到右下角出现一个弹出窗口 -// 同时你可以点击这个弹出窗口右上角的 X 来关闭这个窗口 - -// 通过该例子你可以得知在 JavaScript 下如何使用 DOM API——但是, -// TypeScript 为此也提供了更强大的支持。 - -// 这里同时提供一个使用 TypeScript 的 WebGL 应用的扩展例子: -// example:typescript-with-webgl - diff --git a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with WebGL.js b/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with WebGL.js deleted file mode 100644 index e9b688d1ed03..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/External APIs/TypeScript with WebGL.js +++ /dev/null @@ -1,277 +0,0 @@ -//// { order: 5, isJavaScript: true } - -// 该例子通过使用 JavaScript 创建一个基于 WebGL 的 HTML canvas 来渲染一些旋转的彩色纸屑。 -// 我们通过这些代码来了解它是如何工作的,看看 TypeScript 的工具所提供的便利。 - -// 该例子用于:example:working-with-the-dom - -// 首先,我们需要创建一个 HTML canvas, 并通过 DOM API 来为该 canvas -// 设置一些样式: - -const canvas = document.createElement('canvas') -canvas.id = 'spinning-canvas' -canvas.style.backgroundColor = '#0078D4' -canvas.style.position = 'fixed' -canvas.style.bottom = '10px' -canvas.style.right = '20px' -canvas.style.width = '500px' -canvas.style.height = '400px' - -// 下一步,为了更方便地看到修改后的运行效果,我们先在点击 “运行” 按钮之后 -// 把已存在的 canvas 移除掉——现在,你可以修改代码并点击 “运行” 来看看效 -// 果了(或者按 Command + Enter): - -const existingCanvas = document.getElementById(canvas.id) -if (existingCanvas && existingCanvas.parentElement) { - existingCanvas.parentElement.removeChild(existingCanvas) -} - -// 告知 canvas 我们会使用 WebGL 方式来绘图(而不是默认的光栅渲染引擎) - -const gl = canvas.getContext('webgl') - -// 接着我们需要创建顶点着色器 - 简单来说,这些小的代码段会对输入的顶点 -// 数组(浮点数)进行一系列数学变换。 - -// 你可以在着色器代码的最前面看到大量的属性,这些属性会在编译后被传递到 -// 下面示例的着色器中。 - -// 该文章很好地介绍了 WebGL 是如何工作的: -// https://webglfundamentals.org/webgl/lessons/webgl-how-it-works.html - -const vertexShader = gl.createShader(gl.VERTEX_SHADER) -gl.shaderSource( - vertexShader, - ` -precision lowp float; - -attribute vec2 a_position; // XY 平面上的正方形 -attribute float a_startAngle; -attribute float a_angularVelocity; -attribute float a_rotationAxisAngle; -attribute float a_particleDistance; -attribute float a_particleAngle; -attribute float a_particleY; -uniform float u_time; // 全局状态 - -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - float angle = a_startAngle + a_angularVelocity * u_time; - float vertPosition = 1.1 - mod(u_time * .25 + a_particleY, 2.2); - float viewAngle = a_particleAngle + mod(u_time * .25, 6.28); - - mat4 vMatrix = mat4( - 1.3, 0.0, 0.0, 0.0, - 0.0, 1.3, 0.0, 0.0, - 0.0, 0.0, 1.0, 1.0, - 0.0, 0.0, 0.0, 1.0 - ); - - mat4 shiftMatrix = mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, 1.0, 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - a_particleDistance * sin(viewAngle), vertPosition, a_particleDistance * cos(viewAngle), 1.0 - ); - - mat4 pMatrix = mat4( - cos(a_rotationAxisAngle), sin(a_rotationAxisAngle), 0.0, 0.0, - -sin(a_rotationAxisAngle), cos(a_rotationAxisAngle), 0.0, 0.0, - 0.0, 0.0, 1.0, 0.0, - 0.0, 0.0, 0.0, 1.0 - ) * mat4( - 1.0, 0.0, 0.0, 0.0, - 0.0, cos(angle), sin(angle), 0.0, - 0.0, -sin(angle), cos(angle), 0.0, - 0.0, 0.0, 0.0, 1.0 - ); - - gl_Position = vMatrix * shiftMatrix * pMatrix * vec4(a_position * 0.03, 0.0, 1.0); - vec4 normal = vec4(0.0, 0.0, 1.0, 0.0); - vec4 transformedNormal = normalize(pMatrix * normal); - - float dotNormal = abs(dot(normal.xyz, transformedNormal.xyz)); - float regularLighting = dotNormal / 2.0 + 0.5; - float glanceLighting = smoothstep(0.92, 0.98, dotNormal); - v_color = vec3( - mix((0.5 - transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting), - mix(0.5 * regularLighting, 1.0, glanceLighting), - mix((0.5 + transformedNormal.z / 2.0) * regularLighting, 1.0, glanceLighting) - ); - - v_position = a_position; - v_overlight = 0.9 + glanceLighting * 0.1; -} -` -) -gl.compileShader(vertexShader) - -// 下面的例子用了片段着色器——片段着色器是另外一种小的代码片段,它用于 -// 计算 canvas 画布中每个像素的颜色。 - -// 在这个例子里面,你可以通过尝试手动修改一下里面的一些数字的值,这样你就大概知道它们 -// 都代表着什么样的变化了,它们会影响到场景中的光线、以及彩色纸屑的边框半径: - -const fragmentShader = gl.createShader(gl.FRAGMENT_SHADER) -gl.shaderSource( - fragmentShader, - ` -precision lowp float; -varying vec2 v_position; -varying vec3 v_color; -varying float v_overlight; - -void main() { - gl_FragColor = vec4(v_color, 1.0 - smoothstep(0.8, v_overlight, length(v_position))); -} -` -) -gl.compileShader(fragmentShader) - -// 将编译后的着色器加入到 canvas 中的 WebGL 上下文中以供使用: - -const shaderProgram = gl.createProgram() -gl.attachShader(shaderProgram, vertexShader) -gl.attachShader(shaderProgram, fragmentShader) -gl.linkProgram(shaderProgram) -gl.useProgram(shaderProgram) - -gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()) - -// 我们需要通过一种内存安全的方式来设置或者读取着色器变量,因此我们需要 -// 先定义这些变量的长度以及偏移量: - -// 译者注: -// 这些属性的数据类型都是浮点数,因此实际上 1 个单位空间长度相当于 4 个字节 -// 这一点在后面的代码中有体现 -// -// 例如:a_position 属性表示坐标位置,则包含 x 和 y. 在在内存中需要占 2 个单位长度的空间 -// a_startAngle 表示角度,只需要一个浮点数,占 1 个单位长度的空间 - -const attrs = [ - { name: "a_position", length: 2, offset: 0 }, - { name: "a_startAngle", length: 1, offset: 2 }, // but angle is just 1 value - { name: "a_angularVelocity", length: 1, offset: 3 }, - { name: "a_rotationAxisAngle", length: 1, offset: 4 }, - { name: "a_particleDistance", length: 1, offset: 5 }, - { name: "a_particleAngle", length: 1, offset: 6 }, - { name: "a_particleY", length: 1, offset: 7 } -] - -const STRIDE = Object.keys(attrs).length + 1 - -// 通过遍历我们上面定义的已知的属性,并在 JS 代码中为他们在内存中创建指针,通过这些指针我们可以把 -// 值填充到着色器中。 - -// 为了更好理解这些 API,略作注解:WebGL 是一套基于 OpenGL 的状态机方式的 API。 -// 你以特定的顺序输入命令,将内容呈现在屏幕上。 - -// 因此,我们常见的做法并不是把渲染的数据和对象传递给每一次 WebGL 的 API 调用,而是 -// 把内容传递给一个函数,并由这个函数再传递给它的下一个函数调用,以此类推。所以,我们 -// 在这里为 WebGL 创建一个顶点指针的数组: - -for (var i = 0; i < attrs.length; i++) { - const name = attrs[i].name - const length = attrs[i].length - const offset = attrs[i].offset - const attribLocation = gl.getAttribLocation(shaderProgram, name) - gl.vertexAttribPointer(attribLocation, length, gl.FLOAT, false, STRIDE * 4, offset * 4) - gl.enableVertexAttribArray(attribLocation) -} - -// 我们在把这些属性绑定到一个内存中的一个数组里: - -gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()) - -// 并定义一些渲染常量: - -const NUM_PARTICLES = 200 -const NUM_VERTICES = 4 - -// 你可以试着减少这个值,并反复点击 运行” 按钮 -// 该值表示每个彩纸上应该有多少个点,如果你把它赋值为一个奇数,它看起来 -// 就会不太正常。 - -const NUM_INDICES = 6 - -// 创建顶点着色器的输入数组 -const vertices = new Float32Array(NUM_PARTICLES * STRIDE * NUM_VERTICES) -const indices = new Uint16Array(NUM_PARTICLES * NUM_INDICES) - -for (let i = 0; i < NUM_PARTICLES; i++) { - const axisAngle = Math.random() * Math.PI * 2 - const startAngle = Math.random() * Math.PI * 2 - const groupPtr = i * STRIDE * NUM_VERTICES - - const particleDistance = Math.sqrt(Math.random()) - const particleAngle = Math.random() * Math.PI * 2 - const particleY = Math.random() * 2.2 - const angularVelocity = Math.random() * 2 + 1 - - for (let j = 0; j < 4; j++) { - const vertexPtr = groupPtr + j * STRIDE - vertices[vertexPtr + 2] = startAngle // 初始角度 - vertices[vertexPtr + 3] = angularVelocity // 角速度 - vertices[vertexPtr + 4] = axisAngle // 角度差 - vertices[vertexPtr + 5] = particleDistance // 粒子到 (0,0,0) 的距离 - vertices[vertexPtr + 6] = particleAngle // 粒子绕 Y 轴的旋转角度 - vertices[vertexPtr + 7] = particleY // 粒子的 Y 轴坐标 - } - - // 坐标 - vertices[groupPtr] = vertices[groupPtr + STRIDE * 2] = -1 - vertices[groupPtr + STRIDE] = vertices[groupPtr + STRIDE * 3] = +1 - vertices[groupPtr + 1] = vertices[groupPtr + STRIDE + 1] = -1 - vertices[groupPtr + STRIDE * 2 + 1] = vertices[groupPtr + STRIDE * 3 + 1] = +1 - - const indicesPtr = i * NUM_INDICES - const vertexPtr = i * NUM_VERTICES - indices[indicesPtr] = vertexPtr - indices[indicesPtr + 4] = indices[indicesPtr + 1] = vertexPtr + 1 - indices[indicesPtr + 3] = indices[indicesPtr + 2] = vertexPtr + 2 - indices[indicesPtr + 5] = vertexPtr + 3 -} - -// 把数据传递给 WebGL 上下文 -gl.bufferData(gl.ARRAY_BUFFER, vertices, gl.STATIC_DRAW) -gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW) - - -const timeUniformLocation = gl.getUniformLocation(shaderProgram, "u_time") -const startTime = (window.performance || Date).now() - -// 用黑色作为画布的擦除填充颜色 -gl.clearColor(0, 0, 0, 1) - -// 顶点着色器允许透明通道 -gl.enable(gl.BLEND) -gl.blendFunc(gl.SRC_ALPHA, gl.ONE) - -// 把 WebGL 上下文的尺寸设为和 canvas 的尺寸一致 -gl.viewport(0, 0, canvas.width, canvas.height) - -// 创建一个帧循环用于绘制彩纸 -;(function frame() { - gl.uniform1f(timeUniformLocation, ((window.performance || Date).now() - startTime) / 1000) - - gl.clear(gl.COLOR_BUFFER_BIT) - gl.drawElements( - gl.TRIANGLES, - NUM_INDICES * NUM_PARTICLES, - gl.UNSIGNED_SHORT, - 0 - ) - requestAnimationFrame(frame) -})() - -// 把 canvas 加入到当前页面的右下角 -// -// 译者注:原注释中是 "bottom left",其实是 "bottom right" -// 如位置需要调整,可以修改该范例代码最前面的 CSS 样式 -document.body.appendChild(canvas) - -// 鸣谢: 基于 Subzey 的这个 JSFiddle 范例: -// https://jsfiddle.net/subzey/52sowezj/ diff --git a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Function Chaining.ts b/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Function Chaining.ts deleted file mode 100644 index c3cf39fcb3ff..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Function Chaining.ts +++ /dev/null @@ -1,73 +0,0 @@ -//// { order: 2, compiler: { esModuleInterop: true } } - -// 在 JavaScript 中,链式函数是很常见的 API 模式。由于他们 -// 具有嵌套特性,所以可以让您的代码减少中间值,并且增加可读性。 - -// jQuery 拥有一个常见的、可以链式使用的 API,这是 -// jQuery 与 DefinitelyTyped 中的类型一起使用的示例: - -import $ from "jquery"; - -// 这是使用 jQuery API 的示例: - -$("#navigation").css("background", "red").height(300).fadeIn(200); - -// 如果您在上面的行中增加了一个点(.),则会看到一长串函数。 -// 这种模式很容易在 JavaScript 中复现。关键是要确保 -// 返回相同的对象。 - -// 这是创建链式 API 的一个示例。关键是要有一个跟踪内部状态的 -// 外部函数,以及一个最终返回的暴露 API 的对象。 - -const addTwoNumbers = (start = 1) => { - let n = start; - - const api = { - // 实现您 API 中的所有函数 - add(inc: number = 1) { - n += inc; - return api; - }, - - print() { - console.log(n); - return api; - }, - }; - return api; -}; - -// 允许我们使用与 jQuery 中相同的 API 风格: - -addTwoNumbers(1).add(3).add().print().add(1); - -// 这是一个使用类时的链式调用示例: - -class AddNumbers { - private n: number; - - constructor(start = 0) { - this.n = start; - } - - public add(inc = 1) { - this.n = this.n + inc; - return this; - } - - public print() { - console.log(this.n); - return this; - } -} - -// 下面的代码可以按预期工作: - -new AddNumbers(2).add(3).add().print().add(1); - -// 本例是使用 TypeScript 的类型推导来为 JavaScript 的模式 -// 提供帮助的一种方法。 - -// 更多的例子可以查看: -// -// - example:code-flow diff --git a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Generic Functions.ts b/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Generic Functions.ts deleted file mode 100644 index 998bc33d49d7..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Generic Functions.ts +++ /dev/null @@ -1,81 +0,0 @@ -// 泛型提供了在类型中以变量的形式使用类型的元方法, - -// 我们将努力使本例保持简洁,您可以使用泛型做很多事,并且您可能有时 -// 会看到一些非常复杂的使用泛型的代码——但这并不意味着泛型很复杂。 - -// 让我们从将 input 对象包装在数组中的示例开始,在这种情况下,我们 -// 只关心一个类型变量,即传入的类型。 - -function wrapInArray(input: Type): Type[] { - return [input]; -} - -// 注:通常将 Type 称为 T,在文化上,这是一种类似于人们在 for 循环中使用 -// i 来表示索引。T 通常表示 Type,因此为了清楚起见,我们将使用全名。 - -// 我们的函数将使用推导来确保传入的类型与传出的类型相同(即使它被包含在数组中)。 - -const stringArray = wrapInArray("hello generics"); -const numberArray = wrapInArray(123); - -// 我们可以通过检查是否可以将字符串数组赋值诶应为对象数组的函数 -// 来验证其是否正常工作。 -const notStringArray: string[] = wrapInArray({}); - -// 您还可以通过自行添加类型来跳过泛型类型推导: -const stringArray2 = wrapInArray(""); - -// wrapInArray 允许使用任何类型,但在某些情况下,您只允许某些类型的 -// 子集。在这种情况下,您可以指定类型必须扩展特定类型。 - -interface Drawable { - draw: () => void; -} - -// 这个函数接收一组对象,这些对象具有用于在屏幕上绘制的功能: -function renderToScreen(input: Type[]) { - input.forEach((i) => i.draw()); -} - -const objectsWithDraw = [{ draw: () => {} }, { draw: () => {} }]; -renderToScreen(objectsWithDraw); - -// 如果没有 draw,它会报错: - -renderToScreen([{}, { draw: () => {} }]); - -// 当您有多个变量时,泛型看起来可能会很复杂。这是一个缓存函数的示例, -// 可以让您拥有不同的输入类型和缓存。 - -interface CacheHost { - save: (a: any) => void; -} - -function addObjectToCache(obj: Type, cache: Cache): Cache { - cache.save(obj); - return cache; -} - -// 这和上面相同,但有一个额外的参数。 -// 注:尽管如此,我们必须使用 any。这可以使用泛型接口来解决。 - -interface CacheHostGeneric { - save: (a: ContentType) => void; -} - -// 在使用 CacheHostGeneric 时,您必须告诉它 ContentType 是什么。 - -function addTypedObjectToCache>(obj: Type, cache: Cache): Cache { - cache.save(obj); - return cache; -} - -// 单从语法而言,这很快就变复杂了。但是这提供了额外的安全性。这是取舍,您 -// 现在有更多相关的知识要做。在为其他人提供 API 时,泛型提供了一种灵活的 -// 方法,让他们通过完整的类型推导使用自己的类型。 - -// 更多关于泛型、类和函数的示例可以查看: -// -// example:advanced-classes -// example:typescript-with-react -// https://www.typescriptlang.org/docs/handbook/generics.html diff --git a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Typing Functions.ts b/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Typing Functions.ts deleted file mode 100644 index 37126dfed269..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Functions with JavaScript/Typing Functions.ts +++ /dev/null @@ -1,117 +0,0 @@ -// TypeScript 的类型推断可以帮助您做很多事,但是还有很多其他方法可以 -// 提供更丰富的标记函数形状的方法。 - -// 可选函数是看起来很棒的一点,它可以让其他人知道你可以跳过这个参数。 - -let i = 0; -const incrementIndex = (value?: number) => { - i += value === undefined ? 1 : value; -}; - -// 这个函数可以像这样调用: - -incrementIndex(); -incrementIndex(0); -incrementIndex(3); - -// 你可以将参数标记为函数,从而在编写函数时提供类型推导。 - -const callbackWithIndex = (callback: (i: number) => void) => { - callback(i); -}; - -// 嵌入函数接口可能很难阅读(可能有很多箭头)。使用类型别名可以 -// 为函数参数命名 - -type NumberCallback = (i: number) => void; -const callbackWithIndex2 = (callback: NumberCallback) => { - callback(i); -}; - -// 他们可以像这样调用: - -callbackWithIndex((index) => { - console.log(index); -}); - -// 将鼠标悬停在上面的 index 上,您可以看到 TypeScript 可以正确 -// 推断出 index 是一个 number 类型。 - -// 将函数作为实例的引用传递时,TypeScript 类型推导也可以正常工作。 -// 为了展示这一点,我们会使用一个将 number 转换为 string 的函数: - -const numberToString = (n: number) => { - return n.toString(); -}; - -// 它可以适用于数组的 map 之类的方法中,比如将所有数字转换为字符串。 -// 如果您将鼠标悬停在下面的 stringedNumbers 上,则可以看到期望的类型。 -const stringedNumbers = [1, 4, 6, 10].map((i) => numberToString(i)); - -// 我们可以使用快捷形式直接传递函数,并通过更简洁的代码获得相同的结果: -const stringedNumbersTerse = [1, 4, 6, 10].map(numberToString); - -// 您的函数可能可以接受许多类型,但是您可能只对其中一部分属性感兴趣。 -// 而类型签名中的索引签名(indexed signature)对这种情况很有用。 -// 以下类型声明此函数可以用于所有对象,只要它包含属性 name 即可: - -interface AnyObjectButMustHaveName { - name: string; - [key: string]: any; -} - -const printFormattedName = (input: AnyObjectButMustHaveName) => {}; - -printFormattedName({ name: "joey" }); -printFormattedName({ name: "joey", age: 23 }); - -// 如果您希望了解更多关于索引签名的内容,我们建议访问以下链接: -// -// https://www.typescriptlang.org/docs/handbook/interfaces.html#excess-property-checks -// https://basarat.gitbooks.io/typescript/docs/types/index-signatures.html - -// 您还可以通过 tsconfig 配置中 suppressExcessPropertyErrors -// 的选项来在任何地方允许这种行为——但是您不知道其他使用您 API 的用户 -// 是否关掉了这个选项。 - -// JavaScript 中的函数可以接受不同的参数。有两种常见的模式来描述:用于 -// 参数和返回值的并集类型以及函数重载。 - -// 只有在仅有一两处不同且不需要在不同函数中展示不同的文档时,才适合在 -// 参数中使用并集类型。 - -const boolOrNumberFunction = (input: boolean | number) => {}; - -boolOrNumberFunction(true); -boolOrNumberFunction(23); - -// 另一方面,函数重载为参数和返回类型提供了丰富的语法。 - -interface BoolOrNumberOrStringFunction { - /** 接受一个 bool,返回一个 bool */ - (input: boolean): boolean; - /** 接受一个 number,返回一个 number */ - (input: number): number; - /** 接受一个 string,返回一个 bool */ - (input: string): boolean; -} - -// 如果这是您第一次看到 declare 关键字,它使您可以告诉 TypeScript -// 文件中某些即使在运行时不存在的东西存在,对于映射有副作用的代码或 -// 实现某些东西需要很多代码的 demo 来说都非常有用。 - -declare const boolOrNumberOrStringFunction: BoolOrNumberOrStringFunction; - -const boolValue = boolOrNumberOrStringFunction(true); -const numberValue = boolOrNumberOrStringFunction(12); -const boolValue2 = boolOrNumberOrStringFunction("string"); - -// 将鼠标悬停在上述值和函数上,您可以看到正确的文档和返回值。 - -// 函数重载对您很有帮助,但是还有一种可以处理不同类型的输入 -// 和返回值的工具,那就是泛型。 - -// 这为您提供了一种在类型定义中将类型作为占位符变量的方法。 - -// example:generic-functions -// example:function-chaining diff --git a/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Errors.ts b/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Errors.ts deleted file mode 100644 index d3ed6c176ad2..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Errors.ts +++ /dev/null @@ -1,32 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// 默认情况下,TypeScript 在 JavaScript 内不提供错误消息。 -// 该工具专注于为编辑器提供丰富的支持。 - -// 但是打开错误提示非常容易。在一个典型的 JS 文件中,只需要添加 -// 以下注释即可打开 TypeScript 错误提示。 - -// @ts-check - -let myString = "123"; -myString = {}; - -// 虽然在一开始可能会在您的 JS 文件中添加很多红色曲线。但是这仍然可以在 -// JavaScript 中正常工作,并且有一些工具可以修复这些错误。 - -// 对于某些您不想修改代码的棘手的错误,您可以使用 JSDoc 注释来 -// 告诉 TypeScript 类型应该是什么: - -/** @type {string | {}} */ -let myStringOrObject = "123"; -myStringOrObject = {}; - -// 您可以在这里了解更多:example:jsdoc-support - -// 您可以声明下一个错误是不重要的,以让 TypeScript 忽略下一行的错误: - -let myIgnoredError = "123"; -// @ts-ignore -myStringOrObject = {}; - -// 您可以使用代码流进行类型推断来修改您的 JavaScript:example:code-flow diff --git a/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Quick Fixes.ts b/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Quick Fixes.ts deleted file mode 100644 index cba6cf5d3257..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Helping with JavaScript/Quick Fixes.ts +++ /dev/null @@ -1,14 +0,0 @@ -// TypeScript 为常见问题提供快速修复的建议,他们会将这些建议 -// 显示在编辑器中。 - -// 例如,TypeScript 可以提供针对 typo 的快速修复: - -const eulersNumber = 2.7182818284; -eulersNumber.toStrang(); -// ^______^ - 选中这里查看效果 - -class ExampleClass { - method() { - this.notDeclared = 10; - } -} diff --git a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Code Flow.ts b/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Code Flow.ts deleted file mode 100644 index c33e0d9aa6ec..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Code Flow.ts +++ /dev/null @@ -1,56 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -// JavaScript 文件中的代码流会影响整个程序的类型。 - -const users = [{ name: "Ahmed" }, { name: "Gemma" }, { name: "Jon" }]; - -// 我们尝试找到名为 “jon” 的用户。 -const jon = users.find((u) => u.name === "jon"); - -// 在上面的情况中,“find” 可能失败,在这种情况下我们不能得到一个对象, -// 它会创建如下类型: -// -// { name: string } | undefined -// -// 如果您将鼠标悬停在下面的三个用到 ‘jon’ 的地方,您会看到类型的 -// 变化依赖于文本在哪里: - -if (jon) { - jon; -} else { - jon; -} - -// 类型 ‘{ name: string } | undefined’ 使用了叫做 -// 并集类型的 TypeScript 的功能,并集类型是声明对象可能是 -// 几种东西之一的方式。 -// -// 管道符号充当不同类型间的分隔符,JavaScript 的动态特性意味着许多 -// 函数会收到和返回不同类型的对象,因此我们需要能够表达需要处理的对象。 - -// 我们可以通过几种方式来使用它。让我们看一下具有不同类型的值的数组。 - -const identifiers = ["Hello", "World", 24, 19]; - -// 我们可以使用 ‘typeof x === y’ 的 JavaScript 语法来检查第一个 -// 元素的类型。您可以将鼠标悬停在下面的 ‘randomIdentifier’ 上以 -// 查看它在不同的位置之间的变化。 - -const randomIdentifier = identifiers[0]; -if (typeof randomIdentifier === "number") { - randomIdentifier; -} else { - randomIdentifier; -} - -// 控制流分析代表着我们可以编写原始 JavaScript,而 TypeScript 将尝试 -// 去了解代码类型在不同位置如何变化。 - -// 去了解更多关于代码流分析的信息: -// - example:type-guards - -// 要继续阅读示例,您可以跳转到以下不同的位置: -// -// - 现代 JavaScript: example:immutability -// - 类型守卫: example:type-guards -// - JavaScript 函数式编程 example:function-chaining diff --git a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Functions.ts b/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Functions.ts deleted file mode 100644 index 0568f779fba1..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Functions.ts +++ /dev/null @@ -1,73 +0,0 @@ -//// { order: 2, compiler: { noImplicitAny: false } } - -// 在 JavaScript 中有很多方式可以声明函数。让我们看一个将两个 -// 数字相加的函数: - -// 创建一个叫做 addOldSchool 的全局函数。 -function addOldSchool(x, y) { - return x + y; -} - -// 您也可以将函数的名称移动到一个变量名中。 -const anonymousOldSchoolFunction = function (x, y) { - return x + y; -}; - -// 您也可以使用箭头函数作为函数的快捷方式。 -const addFunction = (x, y) => { - return x + y; -}; - -// 我们将着重介绍最后一种方式,但是所有内容都适用于全部三种方式。 - -// TypeScript 提供了函数定义和标记函数预期类型的额外语法。 -// -// 接下来是 add 函数的最开放的版本,它代表 add 接受任意类型的两个 -// 输入:它可以是您输入的字符串,数字或对象。 - -const add1 = (x: any, y: any) => { - return x + y; -}; -add1("Hello", 23); - -// 这是合法的 JavaScript(例如可以这样连接字符串),但是对于我们 -// 已知的适用于数字的函数并不是最佳选择。因此我们将 x 和 y 转换为 -// 仅接受数字。 - -const add2 = (x: number, y: number) => { - return x + y; -}; -add2(16, 23); -add2("Hello", 23); - -// 很好,如果我们传入任何其他非数字的东西可以得到一个错误。如果 -// 您将鼠标悬停在上面的 add2 上,您将会看到 TypeScript 将其描述为: -// -// const add2: (x: number, y: number) => number -// -// 推断出两个输入都是数字时,数字也是唯一可能的返回值类型。很好,您不 -// 需要编写额外的语法。让我们看看这样做的必要条件: - -const add3 = (x: number, y: number): string => { - return x + y; -}; - -// 这个函数将会报错,因为我们告诉 TypeScript 应该返回一个字符串, -// 但是函数没有实现其承诺。 - -const add4 = (x: number, y: number): number => { - return x + y; -}; - -// 这是非常明确的 add2 的版本——在某些情况下,您希望使用显式的返回类型 -// 语法给自己在开始前留下一些工作空间。和测试驱动开发建议从失败的测试开始 -// 类似。但是在这种情况下,它的函数是不正确的。 - -// 此示例仅是入门知识,您可以在手册以及 JavaScript 函数式编程的示例中 -// 了解更多关于 TypeScript 函数的工作原理: -// -// https://www.typescriptlang.org/docs/handbook/functions.html -// example:function-chaining - -// 为了继续学习 JavaScript 精粹,我们将了解代码流如何影响 TypeScript 的类型: -// example:code-flow diff --git a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Hello World.ts b/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Hello World.ts deleted file mode 100644 index fc09a3c27745..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Hello World.ts +++ /dev/null @@ -1,28 +0,0 @@ -//// { order: 0, compiler: { target: 1 } } - -// 欢迎来到 TypeScript 游乐场,本网站很像在浏览器中运行 -// 一个 TypeScript 项目。 - -// 通过分享这些项目,可以轻松并安全的通过游乐场在 TypeScript 中 -// 尝试想法。此页面的 URL 是其他人加载本项目所需的全部内容。 - -const hello = "Hello"; - -// 你可以在右侧看到 TypeScript 编译器的输出结果:这是可以在浏览器、 -// 服务器或任何实际位置上运行的原始 JavaScript。 - -const world = "World"; - -// 通过将 “const” 改为 “var”,您可以看到它如何对代码进行微小的更高。 -// 这是使 TypeScript 为了可以运行在任何运行 JavaScript 的地方所 -// 做的工作之一。 - -console.log(hello + " " + world); - -// 现在您已经了解了 TypeScript 的工作原理,让我们了解一下 TypeScript -// 如何让使用 JavaScript 更有趣。在本节中,我们将尽可能接近原生 JavaScript, -// 以展示如何复用现有知识。 -// -// 点击下方继续: -// -// example:objects-and-arrays diff --git a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Objects and Arrays.ts b/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Objects and Arrays.ts deleted file mode 100644 index 458b63c34126..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/JavaScript Essentials/Objects and Arrays.ts +++ /dev/null @@ -1,89 +0,0 @@ -//// { order: 1, compiler: { strict: false } } - -// JavaScript 对象是用具名键包装的值的集合。 - -const userAccount = { - name: "Kieron", - id: 0, -}; - -// 您可以将他们合并已获得一个更大更复杂的数据模型。 - -const pie = { - type: "Apple", -}; - -const purchaseOrder = { - owner: userAccount, - item: pie, -}; - -// 如果您将鼠标悬停在这些单词上(尝试上面的 purchaseOrder),您可以 -// 看到 TypeScript 是如何将您的 JavaScript 解释为被标记的类型。 - -// 值可以通过“.”(点)访问,可以获取一个采购订单的用户名: -console.log(purchaseOrder.item.type); - -// 如果您用鼠标悬停在括号之间的代码的每个部分上,您可以看到 TypeScript -// 为每个部分都提供了更多的信息。尝试重写下面的内容: - -// 把这个完整复制到下一行: -// -// purchaseOrder.item.type - -// TypeScript 向游乐场提供关于此文件中可用的 JavaScript 对象 -// 的反馈,让您可以减少输入错误并且可以查看额外的信息,而不必在 -// 其他地方查找。 - -// TypeScript 对于数组同样提供了相同的功能。这里有一个数组,其中 -// 只有一个我们的采购订单。 - -const allOrders = [purchaseOrder]; - -// 如果您将鼠标悬停在 allOrders 上,你可以判断它是一个数组,因为悬停 -// 信息以 [] 结尾。您可以使用方括号和索引(从 0 开始)来进行一阶访问。 - -const firstOrder = allOrders[0]; -console.log(firstOrder.item.type); - -// 获取对象的另一种方式是 pop 数组以删除对象。这样做会从数组中删除对象, -// 并返回被删除的对象。这被称为修改数组,因为它会更改其中的基础数据。 - -const poppedFirstOrder = allOrders.pop(); - -// 现在 allOrders 是空的。修改数据对很多东西都很有用,但是减少修改数据是 -// 降低代码复杂度的一种方式。TypeScript 提供了一种声明只读数组的方式: - -// 创建一个基于采购订单的形状创建另一个类型: -type PurchaseOrder = typeof purchaseOrder; - -// 创建一个采购订单的只读数组: -const readonlyOrders: readonly PurchaseOrder[] = [purchaseOrder]; - -// 是的!当然还有更多代码,这里有 4 个新事物: -// -// 类型 PurchaseOrder - 为 TypeScript 声明一个新类型。 -// -// typeof - 让类型推断系统基于后面传入的常量推断类型。 -// -// purchaseOrder - 获取 purchaseOrder 变量,并且告诉 TypeScript -// 这是 orders 数组中所有对象的形状。 -// -// readonly - 这个对象不支持被修改,当创建后,数组的内容将始终如一。 -// -// 现在如果您尝试 pop readonlyOrders,TypeScript 将会抛出一个错误。 - -readonlyOrders.pop(); - -// 您可以在各种地方使用 readonly,虽然这有一些额外的语法,但是 -// 同样会提供很多额外的安全性。 - -// 您可以找到更多关于 readonly 的信息: -// - https://www.typescriptlang.org/docs/handbook/interfaces.html#readonly-properties -// - https://basarat.gitbooks.io/typescript/content/docs/types/readonly.html - -// 并且您可以在函数的示例中继续了解 JavaScript 和 TypeScript: -// example:functions -// -// 或者您可以了解更多关于不可变性的信息: -// example:immutability diff --git a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Async Await.ts b/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Async Await.ts deleted file mode 100644 index 2fa01e84414a..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Async Await.ts +++ /dev/null @@ -1,107 +0,0 @@ -//// { order: 1, target: "es5" } - -// Modern JavaScript added a way to handle callbacks in an -// elegant way by adding a Promise based API which has special -// syntax that lets you treat asynchronous code as though it -// acts synchronously. - -// Like all language features, this is a trade-off in -// complexity: making a function async means your return -// values are wrapped in Promises. What used to return a -// string, now returns a Promise. - -const func = () => ":wave:"; -const asyncFunc = async () => ":wave:"; - -const myString = func(); -const myPromiseString = asyncFunc(); - -myString.length; - -// myPromiseString is a Promise, not the string: - -myPromiseString.length; - -// You can use the await keyword to convert a promise -// into its value. Today, these only work inside an async -// function. - -const myWrapperFunction = async () => { - const myString = func(); - const myResolvedPromiseString = await asyncFunc(); - - // Via the await keyword, now myResolvedPromiseString - // is a string - myString.length; - myResolvedPromiseString.length; -}; - -// Code which is running via an await can throw errors, -// and it's important to catch those errors somewhere. - -const myThrowingFunction = async () => { - throw new Error("Do not call this"); -}; - -// We can wrap calling an async function in a try catch to -// handle cases where the function acts unexpectedly. - -const asyncFunctionCatching = async () => { - const myReturnValue = "Hello world"; - try { - await myThrowingFunction(); - } catch (error) { - console.error("myThrowingFunction failed", error); - } - return myReturnValue; -}; - -// Due to the ergonomics of this API being either returning -// a single value, or throwing, you should consider offering -// information about the result inside the returned value and -// use throw only when something truly exceptional has -// occurred. - -const exampleSquareRootFunction = async (input: any) => { - if (isNaN(input)) { - throw new Error("Only numbers are accepted"); - } - - if (input < 0) { - return { success: false, message: "Cannot square root negative number" }; - } else { - return { success: true, value: Math.sqrt(input) }; - } -}; - -// Then the function consumers can check in the response and -// 确定如何使用您的返回值。尽管这是一个简单的例子,但是一旦您开始使用 -// 网络代码,这些 API 就需要使用额外的语法。 - -const checkSquareRoot = async (value: number) => { - const response = await exampleSquareRootFunction(value); - if (response.success) { - response.value; - } -}; - -// Async、Await 使如下代码: - -// getResponse(url, (response) => { -// getResponse(response.url, (secondResponse) => { -// const responseData = secondResponse.data -// getResponse(responseData.url, (thirdResponse) => { -// ... -// }) -// }) -// }) - -// 变为线性: - -// const response = await getResponse(url) -// const secondResponse = await getResponse(response.url) -// const responseData = secondResponse.data -// const thirdResponse = await getResponse(responseData.url) -// ... - -// 可以使代码左对齐,并且以一致的节奏阅读。 diff --git a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Immutability.ts b/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Immutability.ts deleted file mode 100644 index e78a9a7811e9..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Immutability.ts +++ /dev/null @@ -1,48 +0,0 @@ -// JavaScript 是有一门多种方式声明您的对象不可变的语言。最常见的方式是 -// const ——表示某些值不会变。 - -const helloWorld = "Hello World"; - -// 您不可以更改 helloWorld,TypeScript 将会在您试图修改时报错, -// 因为您同样不能再运行时这样做。 - -helloWorld = "Hi world"; - -// 为什么要关心不变性?很大一部分原因是为了减少代码复杂度。如果您 -// 可以减少可变事物的数量,那么需要跟踪的东西也会随之变少。 - -// 使用 const 是很好的第一步,但是使用 object 时这样会失效。 - -const myConstantObject = { - msg: "Hello World", -}; - -// myConstantObject 并不是一个常量,因为我们仍然可以更改对象的某些 -// 部分。例如我们可以更改 msg: - -myConstantObject.msg = "Hi World"; - -// const 代表该引用的值不变,但对象本身可能在内部发生变化。 -// 我们可以改用 Object.freeze 来实现。 - -const myDefinitelyConstantObject = Object.freeze({ - msg: "Hello World", -}); - -// 当一个对象被 “冻结”,之后您将不能改变其内部。TypeScript 将 -// 对这些情况抛出错误: - -myDefinitelyConstantObject.msg = "Hi World"; - -// 这对数组同样有效: - -const myFrozenArray = Object.freeze(["Hi"]); -myFrozenArray.push("World"); - -// 使用 freeze 代表您确认这个对象将会保持不变。 - -// TypeScript 有一些为了改进对不可变数据处理的额外语法,您可以 -// 在这些例子中里看到他们: -// -// example:literals -// example:type-widening-and-narrowing diff --git a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Import Export.ts b/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Import Export.ts deleted file mode 100644 index b4ca0779a0d0..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/Import Export.ts +++ /dev/null @@ -1,86 +0,0 @@ -//// { order: 1, target: "ES5" } - -// JavaScript 于 2016 将 import、export 添加到该语言,TypeScript 完全 -// 支持这种在文件和外部模块之间进行连接的风格。TypeScript 还通过允许将 -// 类型与代码一起传递来扩展该语法。 - -// 让我们看一下从模块导入代码。 - -import { danger, message, warn, DangerDSLType } from "danger"; - -// 这个例子需要从一个名为 “danger” 的 node 模块获取一组具名导入(named import)。 -// 虽然有 4 个以上的导入,但是这是我们唯一选择导入的东西。 - -// 指定您要导入的东西的名字可以帮助工具删除您的应用中未使用到的代码。 -// 并且可以帮助您了解特定文件中正在使用的内容。 - -// 在这个例子中,danger, message,和 warn 是 JavaScript 的 -// 导入——DangerDSLType 是一个接口类型。 - -// TypeScript 允许工程师使用 JSDoc 为他们的代码提供文档,并且 -// 文档将被一起导入。例如您将鼠标悬停在下面不同的部分上,则 -// 可以看到他们相关的解释。 - -danger.git.modified_files; - -// 如果您想了解怎么提供这些文档注解,可以查看 example:jsdoc-support - -// 另一个导入代码的方式是让模块使用默认导出(default export)。debug 模块 -// 是一个相关的例子,它导出了一个创建日志记录的函数。 - -import debug from "debug"; -const log = debug("playground"); -log("Started running code"); - -// 由于默认导出不具有真实的名称,因此将他们与静态分析工具(如 TypeScript -// 中的重构支持)一起使用时,他们可能会很棘手。但是他们有适合的用途。 - -// 由于导入导出在 JavaScript 中历史悠久,所以会有一些关于默认导出的困惑: -// 一些导出文件中的文档暗示您可以写这样形式的导入: - -import req from "request"; - -// 但是这会报错,在 StackOverflow 上可以找到将其改为 import as 的建议: - -import * as req from "request"; - -// 这样就可以正常工作了。为什么呢?我们将在导出部分的结尾回顾这一点。 - -// 为了可以导入,您必须先导出。现代的导出方式是使用 export 关键字。 - -/** 当前卷轴上的剩余的贴纸 */ -export const numberOfStickers = 11; - -// 它可以通过以如下形式被导入至另一个文件: -// -// import { numberOfStickers } from "./path/to/file" - -// 您可以在一个文件中按需包含任意多个导出,默认导出几乎相与之同。 - -/** 为您生成一个贴纸 */ -const stickerGenerator = () => {}; -export default stickerGenerator; - -// 它可以以如下形式被导入至另一个文件: -// -// import getStickers from "./path/to/file" -// -// 命名取决于模块的使用者。 - -// 导入的类型有很多,这里只介绍了现代代码中最常见的集中。手册中涵盖了 -// 跨越模块便捷的所有方式,这是一个非常大的主题: -// -// https://www.typescriptlang.org/docs/handbook/modules.html - -// 但是,为了解决上一个问题,如果查看此示例的 JavaScript 代码,您将看到: - -// var stickerGenerator = function () { }; -// exports.default = stickerGenerator; - -// 这会将 exports 对象的 default 属性设置为 stickerGenerator, -// 这里的代码将 exports 设置为一个函数,而不是一个对象。 -// -// TypeScript 选择了 ECMAScript 规范中如何处理这些情况的部分,他们会 -// 抛出一个错误。但是有一个编译器选项可以自动为您处理这些情况,即 esModuleInterop。 -// -// 如果您在示例中将此选项打开,您会看到错误消失了。 diff --git a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/JSDoc Support.js b/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/JSDoc Support.js deleted file mode 100644 index 62aa4fd50914..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Modern JavaScript/JSDoc Support.js +++ /dev/null @@ -1,84 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// TypeScript 有着非常丰富的 JSDoc 支持,很多情况下您甚至可以不写 .ts 文件 -// 而仅仅使用 JSDoc 注解去创建丰富的开发环境。 -// -// JSDoc 注释是由两个星号(*)开头的多行注释。 -/* 这是一个普通注释 */ -/** 这是一个 JSDoc 注释 */ - -// JSDoc 注释会附加到下方最近的 JavaScript 代码中。 - -const myVariable = "Hi"; - -// 如果您将鼠标悬停到 myVariable,你可以看到它已经 -// 被附加了这段在 JSDoc 注释中的文字。 - -// JSDoc 注释是一种为 TypeScript 和 您的编辑器提供类型信息的方式。 -// 让我们简单的从将变量的类型设置为内置类型开始。 - -// 对于所有这些示例,您可以将鼠标悬停在名称上,然后再下一行尝试 -// 输入【example】以查看自动完成选项。 - -/** @type {number} */ -var myNumber; - -// 你可以在手册中查看所有已支持的标签: -// -// https://www.typescriptlang.org/docs/handbook/type-checking-javascript-files.html#supported-jsdoc - -// 但是,我们将在这里尝试一些更常见的示例,您也可以将手册中的任何示例粘贴到此处。 - -// 从 JavaScript 配置文件中导入类型: - -/** @type { import("webpack").Config } */ -const config = {}; - -// 创建一个复杂的类型以在其他多处地方复用: - -/** - * @typedef {Object} User - 用户账户 - * @property {string} displayName - 用户用来展示的名字 - * @property {number} id - 唯一 ID - */ - -// 然后通过引用类型的名字来使用它: - -/** @type { User } */ -const user = {}; - -// type 和 typedef 有兼容 TypeScript 的内联类型快捷用法: - -/** @type {{ owner: User, name: string }} */ -const resource; - -/** @typedef {{owner: User, name: string} Resource */ - -/** @type {Resource} */ -const otherResource; - -// 声明一个有类型的函数: - -/** - * 将两个数字相加 - * @param {number} a 第一个数字 - * @param {number} b 第二个数字 - * @returns {number} - */ -function addTwoNumbers(a, b) { - return a + b; -} - -// 你可以使用大多数 TypeScript 的类型工具,例如并集类型: - -/** @type {(string | boolean)} */ -let stringOrBoolean = ""; -stringOrBoolean = false; - -// 在 JSDoc 中扩展全局变量是一个涉及更多内容的过程,您可以 -// 在 VS Code 文档中找到: -// -// https://code.visualstudio.com/docs/nodejs/working-with-javascript#_global-variables-and-type-checking - -// 在您的函数中添加 JSDoc 注释是一个双赢的情况,您将获得更好的工具, -// 所有 API 的使用者也一样。 diff --git a/packages/playground-examples/copy/zh/JavaScript/README.md b/packages/playground-examples/copy/zh/JavaScript/README.md deleted file mode 100644 index 7daf372802ae..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## JavaScript Examples - -These examples are to cover the how TypeScript handles JavaScript. They -can use TypeScript features lightly, but the focus should be to show people -how they can re-use their JavaScript knowledge in TypeScript. diff --git a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Classes 101.ts b/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Classes 101.ts deleted file mode 100644 index 9f0833a9b566..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Classes 101.ts +++ /dev/null @@ -1,49 +0,0 @@ -//// { order: 0 } - -// 类(class)是一种始终用构造函数来创建的 JavaScript 对象。这些类的行为 -// 很像对象,并且具有与 Java、C#、Swift 类似的继承结构。 - -// 下面是一个类的示例: - -class Vendor { - name: string; - - constructor(name: string) { - this.name = name; - } - - greet() { - return "Hello, welcome to " + this.name; - } -} - -// 您可以通过 new 关键字创建一个实例,您可以通过该对象调用方法 -// 和访问属性。 - -const shop = new Vendor("Ye Olde Shop"); -console.log(shop.greet()); - -// 您可以继承一个对象。这是一个可以有多种名字的食品推车: - -class FoodTruck extends Vendor { - cuisine: string; - - constructor(name: string, cuisine: string) { - super(name); - this.cuisine = cuisine; - } - - greet() { - return "Hi, welcome to food truck " + this.name + ". We serve " + this.cuisine + " food."; - } -} - -// 由于我们标记创建新的 FoodTruck 需要两个参数,TypeScript 将 -// 在您只传递一个参数时报错: - -const nameOnlyTruck = new FoodTruck("Salome's Adobo"); - -// 如果您正确地传递两个参数,将可以创建一个 FoodTruck 的新实例: - -const truck = new FoodTruck("Dave's Doritos", "junk"); -console.log(truck.greet()); diff --git a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Generic Classes.ts b/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Generic Classes.ts deleted file mode 100644 index 91698127e372..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Generic Classes.ts +++ /dev/null @@ -1,89 +0,0 @@ -//// { order: 3 } - -// 此示例主要在 TypeScript 中使用,因为这样会更容易理解这种方式。 -// 最后,我们将介绍如何使用 JSDoc 来创建相同的类。 - -// 泛型类是一种表示特定类型依赖另一种类型的方法。例如,这是 -// 一个可以容纳任何对象的抽屉(Drawer),但是只可以有一种类型: - -class Drawer { - contents: ClothingType[] = []; - - add(object: ClothingType) { - this.contents.push(object); - } - - remove() { - return this.contents.pop(); - } -} - -// 要使用 Drawer,您需要另一种类型: - -interface Sock { - color: string; -} - -interface TShirt { - size: "s" | "m" | "l"; -} - -// 我们可以在创建 Drawer 时传入 Sock 类型,从而为 -// Socks 创建一个 drawer: -const sockDrawer = new Drawer(); - -// 现在我们可以添加或删除 drawer 中的 sock 了: -sockDrawer.add({ color: "white" }); -const mySock = sockDrawer.remove(); - -// 以及为 TShirt 创建 Drawer: -const tshirtDrawer = new Drawer(); -tshirtDrawer.add({ size: "m" }); - -// 如果您有点古怪,您甚至可以通过并集类型将 Sock 和 TShirt 混 -// 合用来创建一个 Drawer: - -const mixedDrawer = new Drawer(); - -// 要不通过额外的 TypeScript 语法创建一个类似 Drawer 的类,则需要 -// 使用 JSDoc 中的模板(template)标记。在此示例中,我们定义了模板 -// 变量,然后定义类的属性: - -// 要在游乐场上实验这项功能,您需要将设置更改为 JavaScript 文件, -// 然后删除上面的的 TypeScript 代码。 - -/** - * @template {{}} ClothingType - */ -class Dresser { - constructor() { - /** @type {ClothingType[]} */ - this.contents = []; - } - - /** @param {ClothingType} object */ - add(object) { - this.contents.push(object); - } - - /** @return {ClothingType} */ - remove() { - return this.contents.pop(); - } -} - -// 然后我们通过 JSDoc 创建一个新的类型: - -/** - * @typedef {Object} Coat 一个 Coat - * @property {string} color Coat 的颜色 - */ - -// 然后当我们创建该类型的新实例时,我们使用 @type 将变量 -// 标记为处理 Coat 的 Dresser。 - -/** @type {Dresser} */ -const coatDresser = new Dresser(); - -coatDresser.add({ color: "green" }); -const coat = coatDresser.remove(); diff --git a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Mixins.ts b/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Mixins.ts deleted file mode 100644 index b72a879e4829..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/Mixins.ts +++ /dev/null @@ -1,104 +0,0 @@ -//// { order: 4 } - -// 混合(Mixins)是 TypeScript 支持的 JavaScript 类的伪多重继承 -// 模式。该模式允许您创建一个由许多类合并而成的类。 - -// 首先我们需要一种类型,用于扩展其他类。主要职责是声明传入的类型是一个类。 - -type Constructor = new (...args: any[]) => {}; - -// 然后我们可以创建一系列的类,这些类通过包装最终的类来进行扩展。 -// 此模式当相似的对象具有不同的功能时效果很好。 - -// 这个混合添加了 scale 属性,并带有用于使用封装的 private 属性 -// 以及对其进行更改的 getter 和 setter: - -function Scale(Base: TBase) { - return class extends Base { - private _scale = 1; - - setScale(scale: number) { - this._scale = scale; - } - - get scale(): number { - return this._scale; - } - }; -} - -// 该混合围绕 alpha 合成添加了额外的方法,现代计算机使用这些方法来创建深度: - -function Alpha(Base: TBase) { - return class extends Base { - private alpha = 1; - - setHidden() { - this.alpha = 0; - } - - setVisible() { - this.alpha = 1; - } - - setAlpha(alpha: number) { - this.alpha = alpha; - } - }; -} - -// 一个用于扩展的简单的 sprite 基类: - -class Sprite { - name = ""; - x = 0; - y = 0; - - constructor(name: string) { - this.name = name; - } -} - -// 我们将创建两种具有不同功能的 sprite: - -const ModernDisplaySprite = Alpha(Scale(Sprite)); -const EightBitSprite = Scale(Sprite); - -// 创建这些类的实例表明,由于对象的混合,这些对象具有不同的属性和方法: - -const flappySprite = new ModernDisplaySprite("Bird"); -flappySprite.x = 10; -flappySprite.y = 20; -flappySprite.setVisible(); -flappySprite.setScale(0.8); -console.log(flappySprite.scale); - -const gameBoySprite = new EightBitSprite("L block"); -gameBoySprite.setScale(0.3); - -// 由于 EightBitSprite 没有用于更改 alpha 的混合而报错: -gameBoySprite.setAlpha(0.5); - -// 如果要对包装的类提供更多的保证,则可以将构造函数与泛型一起使用。 - -type GConstructor = new (...args: any[]) => T; - -// 您可以声明只能在基类为特殊形状时应用此混合。 - -type Moveable = GConstructor<{ setXYAcceleration: (x: number, y: number) => void }>; - -// 然后我们可以创建一个混合,它依赖于上述 GConstructor 参数 -// 中存在的函数。 - -function Jumpable(Base: TBase) { - return class extends Base { - jump() { - // 这个混合现在可以知道 setXYAcceleration - this.setXYAcceleration(0, 20); - } - }; -} - -// 只有在混合的结构中有一个添加 setXYAcceleration 的类之后 -// 我们才能创建此 sprite: -const UserSprite = new Jumpable(ModernDisplaySprite); diff --git a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/This.ts b/packages/playground-examples/copy/zh/JavaScript/Working With Classes/This.ts deleted file mode 100644 index 11871d841a2a..000000000000 --- a/packages/playground-examples/copy/zh/JavaScript/Working With Classes/This.ts +++ /dev/null @@ -1,79 +0,0 @@ -//// { order: 2 } - -// 当调用一个类的方法时,您通常希望它引用该类的当前实例。 - -class Safe { - contents: string; - - constructor(contents: string) { - this.contents = contents; - } - - printContents() { - console.log(this.contents); - } -} - -const safe = new Safe("Crown Jewels"); -safe.printContents(); - -// 如果您有其他拥有易于理解的 this 或 self 的面向对象语言的 -// 经验,那么您可能会发现 ‘this’ 令人困惑的地方: -// -// https://yehudakatz.com/2011/08/11/understanding-javascript-function-invocation-and-this/ -// https://aka.ms/AA5ugm2 - -// 太长不看:this 可以改变。this 所引用的对象可能因调用函数的方式而不同。 - -// 例如,如果您将函数传递给另一个函数,并在在另一个对象的上下文中 -// 调用该函数的引用,那么 this 变量引用的对象已经变为调用时的宿主对象。 - -const customObjectCapturingThis = { contents: "http://gph.is/VxeHsW", print: safe.printContents }; -customObjectCapturingThis.print(); // 输出 "http://gph.is/VxeHsW" - 而不是 "Crown Jewels" - -// 这很棘手,因为在处理 API 的回调时,直接传递函数的引用非常吸引人。 -// 可以通过在调用方创建一个新的函数来解决这个问题。 - -const objectNotCapturingThis = { contents: "N/A", print: () => safe.printContents() }; -objectNotCapturingThis.print(); - -// 有几种方法可以解决这个问题,一种是通过 bind 强制将其绑定为您最初 -// 希望绑定的对象。 - -const customObjectCapturingThisAgain = { contents: "N/A", print: safe.printContents.bind(safe) }; -customObjectCapturingThisAgain.print(); - -// 要解决这种意外情况,您还可以通过在类中创建函数的方式。通过创建一个 -// 值为箭头函数的属性,可以让 this 在不同的时间完成绑定。这对于那些 -// 不太熟悉 JavaScript 运行时的人来说更具可预测性。 - -class SafelyBoundSafe { - contents: string; - - constructor(contents: string) { - this.contents = contents; - } - - printContents = () => { - console.log(this.contents); - }; -} - -// 将函数传递给另外一个对象将不会更改 this 的绑定。 - -const saferSafe = new SafelyBoundSafe("Golden Skull"); -saferSafe.printContents(); - -const customObjectTryingToChangeThis = { - contents: "http://gph.is/XLof62", - print: saferSafe.printContents, -}; - -customObjectTryingToChangeThis.print(); - -// 如果您有 TypeScript 项目,您可以使用 noImplicitThis 编译选项 -// 以高亮显示 TypeScript 不能确定某个函数 ‘this’ 的类型的情况。 - -// 你可以在手册中了解更多相关信息: -// -// https://www.typescriptlang.org/docs/handbook/utility-types.html#thistypet diff --git a/packages/playground-examples/copy/zh/Playground/Config/JavaScript Playgrounds.js b/packages/playground-examples/copy/zh/Playground/Config/JavaScript Playgrounds.js deleted file mode 100644 index 597cb188dcb5..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Config/JavaScript Playgrounds.js +++ /dev/null @@ -1,30 +0,0 @@ -//// { order: 3, isJavaScript: true } - -// 游乐场现在同样可以处理 JavaScript 文件。 - -// 你可能会问为什么我们会在游乐场上增加对 JavaScript 的支持呢? -// 但是大多数 TypeScript 的用户可能正在使用 JavaScript。 - -// TypeScript 可以在 JavaScript 文件中使用类型推断,类型自动获取 -// 和 JSDoc,以提供杰出的工具环境。 -// -// example:objects-and-arrays -// example:automatic-type-acquisition -// example:jsdoc-support - -// 游乐场支持 JavaScript 意味着您可以通过复杂的 JSDoc 示例来 -// 学习或引导其他人。或者在效果与期望不匹配时调试问题。 - -// 例如。为什么这个 JSDoc 标注的类型不正确? -/** - * 将两个数字相加 - * @param {number} 第一个数字 - * @param {number} 第二个数字 - * @returns {number} - */ -function addTwoNumbers(a, b) { - return a + b; -} - -// 在这样的环境中,您可以通过鼠标悬停来立即查看发生了什么,这很容易 -// 找到问题。 diff --git a/packages/playground-examples/copy/zh/Playground/Config/New Compiler Defaults.ts b/packages/playground-examples/copy/zh/Playground/Config/New Compiler Defaults.ts deleted file mode 100644 index 917fa04f548b..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Config/New Compiler Defaults.ts +++ /dev/null @@ -1,51 +0,0 @@ -//// { order: 1 } - -// 是的我们知道,TypeScript 的 tsconfig 默认没有打开严格模式。 -// 但是我们团队建议用户尽可能在配置文件中启用严格模式。 - -// 但是对于游乐场来说,我们可以很开心的将默认值设置为严格模式。 -// 游乐场还将追踪与默认值不同的编译选项,并使他们可以在 URL 中共享。 - -// 你可以了解更多关于 URL 的信息: -// example:sharable-urls - -// 想知道新的默认值是什么吗? - -declare const trueInTS: boolean; -declare const trueInJS: boolean; -declare const monaco: any; - -const defaultCompilerOptions = { - noImplicitAny: true, - strictNullChecks: trueInTS, - strictFunctionTypes: true, - strictPropertyInitialization: true, - strictBindCallApply: true, - noImplicitThis: true, - noImplicitReturns: true, - - alwaysStrict: true, - allowUnreachableCode: false, - allowUnusedLabels: false, - - downlevelIteration: false, - noEmitHelpers: false, - noLib: false, - noStrictGenericChecks: false, - noUnusedLocals: false, - noUnusedParameters: false, - - esModuleInterop: true, - preserveConstEnums: false, - removeComments: false, - skipLibCheck: false, - - checkJs: trueInJS, - allowJs: trueInJS, - - experimentalDecorators: false, - emitDecoratorMetadata: false, - - target: monaco.languages.typescript.ScriptTarget.ES2017, - jsx: monaco.languages.typescript.JsxEmit.None, -}; diff --git a/packages/playground-examples/copy/zh/Playground/Language/Automatic Type Acquisition.ts b/packages/playground-examples/copy/zh/Playground/Language/Automatic Type Acquisition.ts deleted file mode 100644 index 5658e87b4357..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Language/Automatic Type Acquisition.ts +++ /dev/null @@ -1,25 +0,0 @@ -// 自动类型获取是指 TypeScript 自动在后台从 npm 的 @types 下获取类型定义 -// 从而为 JavaScript 用户提供更好的用户体验。 - -// 现在游乐场有与 TypeScript 中内置的类型获取类似(但是有更多限制)的版本。 - -// 您可以在代码中添加 import 来使用它,它通过 DefinitelyTyped 中的 -// @types 或依赖项本身内部的 d.ts 文件来工作。 - -import { danger } from "danger"; - -// 在下面高亮显示这些标识符,以查看内置类型中所关联的 JSDoc。 - -danger.github; - -// 它也会处理依赖关系,因此在下面的例子中,danger 也依赖于 @octokit/rest。 - -danger.github.api.pulls.createComment(); - -// 类型获取还将考虑 Node 的内置模块,并在使用时提取出 Node 的类型声明。 -// 需要注意的是,由于需要下载的类型很多,它往往比其他类型花费更长的时间。 - -import { readFileSync } from "fs"; - -const inputPath = "my/path/file.ts"; -readFileSync(inputPath, "utf8"); diff --git a/packages/playground-examples/copy/zh/Playground/Language/Fixits.ts b/packages/playground-examples/copy/zh/Playground/Language/Fixits.ts deleted file mode 100644 index fc74bd04db1b..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Language/Fixits.ts +++ /dev/null @@ -1,18 +0,0 @@ -//// { compiler: { }, order: 1 } - -// TypeScript 支持许多自动修复程序,来帮您修正您的代码。例如如果 -// 你选中第 5 行,然后点击弹出的灯泡,您将获得一些修复建议。 - -function addOne(x: number) { - return x + 1; -} - -// 这个功能自 TypeScript 3.7 版本后以及最新构建的版本中可用。 - -// 在编写实例或学习时,您可能不需要在游乐场中使用他们。 - -// 但是拥有自动修复意味着我们可以游乐场上记录他们。这非常有价值。 - -// example:big-number-literals -// example:const-to-let -// example:infer-from-usage-changes diff --git a/packages/playground-examples/copy/zh/Playground/Tooling/Mobile Support.ts b/packages/playground-examples/copy/zh/Playground/Tooling/Mobile Support.ts deleted file mode 100644 index cb0ebd159140..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Tooling/Mobile Support.ts +++ /dev/null @@ -1,12 +0,0 @@ -//// { order: 99 } - -// 较小的设备可能对编写代码来说不太友好,但是对阅读我们的示例或 -// 快速检查某个人的链接或进行一些较小的修改非常有用。 - -// 在新的游乐场中,我们通过以下方式改善小屏幕的体验: - -// - 去掉与代码无关的菜单项。 -// - 一些小的样式改进。 -// - 切换为唯一的编辑器,这意味着你将看不到转译后的 JS。 - -// 这将会让体验没有那么痛苦。 diff --git a/packages/playground-examples/copy/zh/Playground/Tooling/Sharable URLs.ts b/packages/playground-examples/copy/zh/Playground/Tooling/Sharable URLs.ts deleted file mode 100644 index 2d722d911e4b..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Tooling/Sharable URLs.ts +++ /dev/null @@ -1,23 +0,0 @@ -//// { order: 1 } - -// 在新的游乐场中,URL 包含有关您设置的更多信息。这样可以使 -// 复制更准确,并且您可以不需要额外告诉别人要复制您的设置需要 -// 开启某些特殊的编译选项。 - -// URL 包含: -// -// - 是否使用示例 -// - gzip 后的 TypeScript/JavaScript 源代码 -// - 向后兼容的未压缩的 URL -// - 您在使用什么语言 -// - 您与默认配置不同的编译器选项 example:new-compiler-defaults -// - 您选中的文字(如果您高亮了某些代码) -// -// 上述任何一项更改时,这个 URL 将会使用 HTML5 的 replaceState 来 -// 实时更新,所以您的返回按钮将依旧正常工作。 - -// 当载入一个示例时,您偶尔会看到 e=[number],这是用于确保在不同示例 -// 之间切换时浏览器可以正确的载入。这是无害的。 - -// 通过编辑一些注释或选择一些文本,您可以在此页面看到 URL 在更改。 -// 刷新浏览器将会使您回到相同的状态。 diff --git a/packages/playground-examples/copy/zh/Playground/Tooling/TypeScript Versions.ts b/packages/playground-examples/copy/zh/Playground/Tooling/TypeScript Versions.ts deleted file mode 100644 index cf389840213c..000000000000 --- a/packages/playground-examples/copy/zh/Playground/Tooling/TypeScript Versions.ts +++ /dev/null @@ -1,24 +0,0 @@ -// 在新的游乐场中,我们对您代码的运行环境有更强的控制。新的 -// 游乐场已经与提供编辑器体验的 monaco-editor 和 -// monaco-typescript 解耦。 - -// https://github.com/microsoft/monaco-editor/ -// https://github.com/microsoft/monaco-typescript - -// 解耦意味着游乐场支持用户在 monaco-typescript 集成的 TypeScript -// 和已经构建的不同版本的 TypeScript 之间自由切换。 - -// 我们有为任何版本的 TypeScript 构建 monaco-editor 和 monaco-typescript -// 副本的基础设施。这意味着我们现在可以支持: - -// - TypeScript 的 Beta 测试构建 -// - TypeScript 的最新(Nightly)构建 -// - TypeScript 的某个 Pull Request 对应构建 -// - TypeScript 的历史构建 - -// 由:https://github.com/orta/make-monaco-builds - -// 让新的游乐场如何支持不同版本的 TypeScript 的基础架构来自 -// 该站点的项目: - -// https://github.com/agentcooper/typescript-play diff --git a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Enums.ts b/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Enums.ts deleted file mode 100644 index 935d124caf95..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Enums.ts +++ /dev/null @@ -1,71 +0,0 @@ -// 枚举是 TypeScript 为了更简单的处理一组具名固定值 -// 而添加到 JavaScript 中的功能。 - -// 枚举默认是基于数字的,它的值从 0 开始,其余的每个值都会自增 1, -// 它对于具体的值不重要的场景非常有用。 - -enum CompassDirection { - North, - East, - South, - West, -} - -// 可以通过添加注解来为枚举指定值,并且其他值将继续自增。 - -enum StatusCodes { - OK = 200, - BadRequest = 400, - Unauthorized, - PaymentRequired, - Forbidden, - NotFound, -} - -// 枚举可以通过 枚举名.值名 来引用。 - -const startingDirection = CompassDirection.East; -const currentStatus = StatusCodes.OK; - -// 枚举支持用访问值和用值访问键两种访问方式。 - -const okNumber = StatusCodes.OK; -const okNumberIndex = StatusCodes["OK"]; -const stringBadRequest = StatusCodes[400]; - -// 枚举可以是不同的类型,其中字符串是一种常见的类型。 -// 使用字符串值的枚举可以帮助简化调试,因为你不需要根据运行时的数字去寻找对应的名字。 - -enum GamePadInput { - Up = "UP", - Down = "DOWN", - Left = "LEFT", - Right = "RIGHT", -} - -// 如果你想减少在运行时的数字对象的数量,你可以使用常量枚举。 - -// 常量枚举会在编译时被 TypeScript 替换为对应的值,而不是在运行时查找对象。 - -const enum MouseAction { - MouseDown, - MouseUpOutside, - MouseUpInside, -} - -const handleMouseAction = (action: MouseAction) => { - switch (action) { - case MouseAction.MouseDown: - console.log("Mouse Down"); - break; - } -}; - -// 如果查看编译出的 JavaScript,你可以看到其他的枚举怎样以对象和函数的形式存在, -// 但 MouseAction 并不存在。 - -// 在 handleMouseAction 的 switch 语句中,对于 MouseAction.MouseDown 的检查也是如此。 - -// 枚举可以做更多的事情,你你可以在 TypeScript 手册中查看更多: -// -// https://www.typescriptlang.org/docs/handbook/enums.html diff --git a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Nominal Typing.ts b/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Nominal Typing.ts deleted file mode 100644 index 978110868043..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Nominal Typing.ts +++ /dev/null @@ -1,54 +0,0 @@ -// 标称类型系统(nominal type system)代表每一个类型都是唯一的。 -// 即使你有值相同的数据,你也不可以赋值给其他不同的类型。 - -// TypeScript 的类型系统是结构化(structural)的,也就是说如果 -// 一个类型的形状像一只鸭子,那它就是一只鸭子。如果一只鹅有所有鸭子的属性,那么它也是一只鸭子。 -// 你可以在这里了解更多: example:structural-typing - -// 这可能会有一些缺点,例如有一些有着特殊上下文的字符串或数字, -// 并且你不希望他们被用到其他地方,例如: -// - 用户输入的不安全的字符串 -// - 用于翻译的字符串 -// - 数字形式的用户 ID -// - 访问令牌 - -// 我们可以通过一点点额外的代码来实现和标称类型系统近乎同样的效果。 - -// 我们可以使用一个具有属性 '__brand'(这是一个约定俗成的名称) -// 并且值是一个唯一常量的类型与字符串的交集类型来实现。 -// 这样会使普通的字符串不可以复制给下面的 ValidatedInputString 类型。 - -type ValidatedInputString = string & { __brand: "User Input Post Validation" }; - -// 我们会使用一个函数来将一个普通字符串转换为 ValidatedInputString 类型。 -// 但是值得注意的是,这只是我们将这个转换告诉 TypeScript。 - -const validateUserInput = (input: string) => { - const simpleValidatedInput = input.replace(/\ { - console.log(name); -}; - -// 例如,这里有一些用户输入的不安全的字符串,只有经过验证才可以被允许使用。 - -const input = "\n"; -const validatedInput = validateUserInput(input); -printName(validatedInput); - -// 另一方面,将未经过验证的字符串传入 'printName' 会导致编译错误。 - -printName(input); - -// 你可以阅读这个有 400 多个评论的 Github issue, -// 从中找到如何通过不同的方法创建标称类型, 以及关于它们的全面论述和折衷方案。 -// -// https://github.com/Microsoft/TypeScript/issues/202 -// -// 这篇文章是一个很好的总结。 -// -// https://michalzalecki.com/nominal-typing-in-typescript/ diff --git a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Types vs Interfaces.ts b/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Types vs Interfaces.ts deleted file mode 100644 index 12919d73b714..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language Extensions/Types vs Interfaces.ts +++ /dev/null @@ -1,72 +0,0 @@ -// 声明一个对象的类型时,有两个主要的工具:接口(interface)和类型别名(type aliases)。 -// -// 他们非常相似,并且在大多数情况下是相同的。 - -type BirdType = { - wings: 2; -}; - -interface BirdInterface { - wings: 2; -} - -const bird1: BirdType = { wings: 2 }; -const bird2: BirdInterface = { wings: 2 }; - -// 因为 TypeScript 有着结构化类型系统。 -// 我们也可以混合使用他们。 - -const bird3: BirdInterface = bird1; - -// 他们都支持扩展另一个些接口或类型。 -// 类型别名通过并集类型来实现,接口通过 extends 关键字。 - -type Owl = { nocturnal: true } & BirdType; -type Robin = { nocturnal: false } & BirdInterface; - -interface Peacock extends BirdType { - colourful: true; - flies: false; -} -interface Chicken extends BirdInterface { - colourful: false; - flies: false; -} - -let owl: Owl = { wings: 2, nocturnal: true }; -let chicken: Chicken = { wings: 2, colourful: false, flies: false }; - -// 也就是说,我们建议您使用接口而不是类型别名,因为你可以在接口中获得更好的错误提示。 -// 如果你将鼠标悬停在下面的错误上,你会看到在使用接口(例如 Chicken)时, -// TypeScript 会提供更简洁的提示信息。 - -owl = chicken; -chicken = owl; - -// 一个接口和类型别名的主要区别是,接口是开放的,类型别名是封闭的。 -// 这意味着你可以你可以通过多次声明同一个接口来扩展它。 - -interface Kitten { - purrs: boolean; -} - -interface Kitten { - colour: string; -} - -// 与此同时,类型别名不可以在外部变更它的声明。 - -type Puppy = { - color: string; -}; - -type Puppy = { - toys: number; -}; - -// 基于你不同的目的,这个区别可以是证明的也可以是负面的。 -// 一般来说,对于公开的需要暴露的类型,将他们作为接口是更好的选择。 - -// 要查看接口和类型定义之间所有边际条件,下面的 StackOverflow 讨论是最好的资源之一: - -// https://stackoverflow.com/questions/37233735/typescript-interfaces-vs-types/52682220#52682220 diff --git a/packages/playground-examples/copy/zh/TypeScript/Language/Soundness.ts b/packages/playground-examples/copy/zh/TypeScript/Language/Soundness.ts deleted file mode 100644 index 01bf95e5d4b9..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language/Soundness.ts +++ /dev/null @@ -1,99 +0,0 @@ -//// {compiler: { strictFunctionTypes: false } } - -// 如果您没有类型理论方面的背景知识,您可能不太了解 -// 类型系统是 “健全的” 这个概念。 - -// 健全性是指编译器可以使值不仅在编译时,还可以在运行时具有预期的类型。 -// 这对于大多数从一开始就具有类型的编程语言来说是很正常的。 - -// 要对于一个已经存在了几十年的语言建立一个类型系统,就需要对三个质量维度进行 -// 权衡和取舍:简单性,可用性和健全性。 - -// TypeScript 的目标是支持所有的 JavaScript 代码, -// 且为 JavaScript 添加类型支持时,语言趋向于简单易用。 - -// 让我们看一些让 TypeScript 看起来没那么健全的例子, -// 并且去理解这些权衡和取舍是什么样子。 - -// 类型断言(Type Assertions) - -const usersAge = ("23" as any) as number; - -// TypeScript 允许您使用类型断言来重写一些可能错误的类型推断。 -// 使用类型断言代表告诉 TypeScript 您知道最正确的信息, -// 并且 TypeScript 将会尝试让您继续使用它。 - -// 健全性比较好的语言有时会使用运行时检查来确保数据与您的类型匹配。 -// 但是 TypeScript 旨在不对编译后的代码产生类型感知的运行时的影响。 - -// 函数参数双变 - -// 函数的参数支持将参数重新定义为原始类型声明的子类型。 - -interface InputEvent { - timestamp: number; -} -interface MouseInputEvent extends InputEvent { - x: number; - y: number; -} -interface KeyboardInputEvent extends InputEvent { - keyCode: number; -} - -function listenForEvent(eventType: "keyboard" | "mouse", handler: (event: InputEvent) => void) {} - -// 我们可以将参数的类型重新声明为它定义的子类型。 -// 上例中 handler 预期为一个 'InputEvent' 类型,但是在后面 -// 使用的例子中,TypeScript 接受附加了新属性的类型。 - -listenForEvent("keyboard", (event: KeyboardInputEvent) => {}); -listenForEvent("mouse", (event: MouseInputEvent) => {}); - -// 而这个可以一直回溯到最小的公共类型: - -listenForEvent("mouse", (event: {}) => {}); - -// 但没有更进一步。 - -listenForEvent("mouse", (event: string) => {}); - -// 这覆盖了实际环境中 JavaScript 事件监听器的模式,但是会牺牲一些健全性。 - -// 在 'strictFunctionTypes' 选项开启时,TypeScript 可以对此抛出一些异常, -// 或者您可以通过函数重载来解决这个特殊情况。 -// 具体可以看 example:typing-functions - -// Void special casing - -// Parameter Discarding - -// 查看 example:structural-typing 以了解更多函数参数的特殊例子。 - -// 剩余参数 - -// 剩余参数均被推断为可选参数,这意味着 TypeScript 将无法确保 -// 用于回调的参数的数量。 - -function getRandomNumbers(count: number, callback: (...args: number[]) => void) {} - -getRandomNumbers(2, (first, second) => console.log([first, second])); -getRandomNumbers(400, (first) => console.log(first)); - -// 空返回值函数可以匹配具有返回值的函数 - -// 一个返回空的函数,可以接受一个返回其他类型的函数。 - -const getPI = () => 3.14; - -function runFunction(func: () => void) { - func(); -} - -runFunction(getPI); - -// 要了解更多关于类型系统健全性取舍的内容,可以查看: - -// https://github.com/Microsoft/TypeScript/wiki/FAQ#type-system-behavior -// https://github.com/Microsoft/TypeScript/issues/9825 -// https://www.typescriptlang.org/docs/handbook/type-compatibility.html diff --git a/packages/playground-examples/copy/zh/TypeScript/Language/Structural Typing.ts b/packages/playground-examples/copy/zh/TypeScript/Language/Structural Typing.ts deleted file mode 100644 index f4af33c328d8..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language/Structural Typing.ts +++ /dev/null @@ -1,74 +0,0 @@ -// TypeScript 是结构化类型系统,结构化类型系统意味着 -// 在比较类型时,TypeScript 仅考虑类型上的成员。 - -// 这与标称类型系统可以创建两种类型,但不能将他们互相赋值的行为不同。 -// 查看 example:nominal-typing 以了解更多. - -// 例如,如下两个接口在结构化类型系统中,完全可以互相转移。 - -interface Ball { - diameter: number; -} -interface Sphere { - diameter: number; -} - -let ball: Ball = { diameter: 10 }; -let sphere: Sphere = { diameter: 20 }; - -sphere = ball; -ball = sphere; - -// 如果我们添加了一个包含所有 Ball 和 Sphere 类型成员的类型, -// 那么它也可以赋值给 ball 或 sphere。 - -interface Tube { - diameter: number; - length: number; -} - -let tube: Tube = { diameter: 12, length: 3 }; - -tube = ball; -ball = tube; - -// 因为 ball 没有 length 属性,所以它不可以被赋值给 tube 变量。 -// 然而 tube 包含所有 Ball 的成员,所以 tube 可以被赋值给 ball。 - -// TypeScript 将类型中的每个成员进行比较,以验证他们的相等性。 - -// JavaScript中,一个函数是一个对象,并且他们以类似的方式比较。 -// 一个参数的额外技巧: - -let createBall = (diameter: number) => ({ diameter }); -let createSphere = (diameter: number, useInches: boolean) => { - return { diameter: useInches ? diameter * 0.39 : diameter }; -}; - -createSphere = createBall; -createBall = createSphere; - -// TypeScript 认为 (number) 与 (number, boolean) 在参数中相等, -// 但是不认为 (number, boolean) 与 (number) 相等。 - -// TypeScript 将丢弃在第一个赋值中的 boolean 参数。 -// 因为这是一个在 JavaScript 中,忽略不需要的参数的常见的方法。 - -// 例如,数组的 'forEach' 方法的回调有 3 个参数,值,索引,和整个数组。 -// 如果 TypeScript 不支持丢弃参数,您必须包含所有的参数以使函数完备。 - -[createBall(1), createBall(2)].forEach((ball, _index, _balls) => { - console.log(ball); -}); - -// 没有人希望这样。 - -// 返回值被视为对象,并且所有差异均按照上述对象相等性规则进行比较。 - -let createRedBall = (diameter: number) => ({ diameter, color: "red" }); - -createBall = createRedBall; -createRedBall = createBall; - -// 第一个赋值是有效的(他们都有 diameter), -// 第二个赋值不是有效的(ball 没有 color)。 diff --git a/packages/playground-examples/copy/zh/TypeScript/Language/Type Guards.ts b/packages/playground-examples/copy/zh/TypeScript/Language/Type Guards.ts deleted file mode 100644 index 5df324b46f5e..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language/Type Guards.ts +++ /dev/null @@ -1,83 +0,0 @@ -// 类型守卫是您通过代码影响代码流分析的功能。 -// TypeScript 使用现存的 JavaScript 在运行时验证对象的行为来进行代码流分析。 -// 本文假定您已阅读 example:code-flow - -// 为了展示这些例子,我们会创建一些类。 -// 这是用来处理互联网或电话订单的系统。 - -interface Order { - address: string; -} -interface TelephoneOrder extends Order { - callerNumber: string; -} -interface InternetOrder extends Order { - email: string; -} - -// 然后定义一个可能是两种订单子类型之一或 undefined 的类型。 -type PossibleOrders = TelephoneOrder | InternetOrder | undefined; - -// 创建一个函数,返回 PossibleOrders 类型。 -declare function getOrder(): PossibleOrders; -const possibleOrder = getOrder(); - -// 我们可以使用 'in' 操作符来检查某个特定的键存在在对象上, -// 以缩小并集类型的范围 ('in' 是 JavaScript中用来检查对象上键是否存在的操作符)。 - -if ("email" in possibleOrder) { - const mustBeInternetOrder = possibleOrder; -} - -// 如果您有符合接口的类,可以使用 JavaScript 中 'instanceof' 操作符来检查。 - -class TelephoneOrderClass { - address: string; - callerNumber: string; -} - -if (possibleOrder instanceof TelephoneOrderClass) { - const mustBeTelephoneOrder = possibleOrder; -} - -// 你可以使用 JavaScript 中 'typeof' 操作符来缩小您的并集类型。 -// 它只对于 JavaScript 中的基本类型起作用(例如字符串,对象,数组等)。 - -if (typeof possibleOrder === "undefined") { - const definitelyNotAnOder = possibleOrder; -} - -// 你可以在这里看到全部 typeof 的可能的值: -// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Operators/typeof - -// 使用 JavaScript 操作符仅仅可以帮助您实现一部分功能, -// 当您希望检查自己定义的类型时,您可以使用类型谓词函数。 - -// 类型谓词函数是一个当返回 true 时,会给代码流分析提供一些额外信息的函数。 - -// 要使用 PossibleOrders 类型,我们可以用两个类型守卫 -// 来声明 possibleOrder 究竟是哪个类型: - -function isAnInternetOrder(order: PossibleOrders): order is InternetOrder { - return order && "email" in order; -} - -function isATelephoneOrder(order: PossibleOrders): order is TelephoneOrder { - return order && "calledNumber" in order; -} - -// 现在我们可以使用这些函数在 if 语句中缩小 possibleOrder 的可能的类型: - -if (isAnInternetOrder(possibleOrder)) { - console.log("Order received via email:", possibleOrder.email); -} - -if (isATelephoneOrder(possibleOrder)) { - console.log("Order received via phone:", possibleOrder.callerNumber); -} - -// 你可以在这里获得更多关于代码流分析的信息: -// -// - example:code-flow -// - example:type-guards -// - example:discriminate-types diff --git a/packages/playground-examples/copy/zh/TypeScript/Language/Type Widening and Narrowing.ts b/packages/playground-examples/copy/zh/TypeScript/Language/Type Widening and Narrowing.ts deleted file mode 100644 index b1e869d1cd73..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Language/Type Widening and Narrowing.ts +++ /dev/null @@ -1,57 +0,0 @@ -// 通过例子来研究类型扩展(Widening)和缩小(Narrowing)比较容易被接受: - -const welcomeString = "Hello There"; -let replyString = "Hey"; - -// 除了字符文本的差异外,welcomeString 是由 const 定义的(代表值不会变), -// replyString 是由 let 定义的(代表值可以被改变)。 - -// 如果你将鼠标悬停在每个变量上,你会看到 TypeScript 提供的非常不同的类型信息。 -// -// const welcomeString: "Hello There" -// -// let replyString: string - -// TypeScript 推断出 welcomeString 的类型是字符串字面量类型 "Hello There", -// 而 replyString 是普通字符串。 - -// 这是因为 let 需要一个更宽泛的类型,你可以将 replyString 赋值为任何其他字符串, -// 这意味着它具有更多的可能性。 - -replyString = "Hi :wave:"; - -// 如果 replyString 的类型是字符串字面量 "Hey", 那么你将不能改变它的值, -// 因为它只可以再次被赋值为 ”Hey“ - -// 扩展和缩小类型是增减类型可以表示的可能性。 - -// 类型缩小的一个例子是关于并集类型的,这个代码流分析中的例子几乎完全基于类型缩小。 -// example:code-flow - -// 通过可空检查的严格模式,类型缩小可以具有强大的能力。 -// 当严格模式关闭,例如 undefined 或 null 等可空性的标记将会在并集类型中被忽略。 - -declare const quantumString: string | undefined; -// 这个例子仅会在严格模式产生错误。 -quantumString.length; - -// 在严格模式下,代码作者需要确保使用的类型已经缩小为非空类型。 -// 通常来说,它就像添加一个 if 检查一样简单: - -if (quantumString) { - quantumString.length; -} - -// 在严格模式下 quantumString 的类型有两种可能性, -// 在 if 语句中,类型被缩小,只剩余字符串。 - -// 你可以在这里看到更多关于缩小的例子: -// -// example:union-and-intersection-types -// example:discriminate-types - -// -// 以及网络上有更多的资源: -// -// https://mariusschulz.com/blog/literal-type-widening-in-typescript -// https://sandersn.github.io/manual/Widening-and-Narrowing-in-Typescript.html diff --git a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Conditional Types.ts b/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Conditional Types.ts deleted file mode 100644 index b3c998f68a0f..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Conditional Types.ts +++ /dev/null @@ -1,90 +0,0 @@ -// 条件类型(Conditional Types)允许在 TypeScript 类型系统中进行简单的运算。 -// 这绝对是一项高级功能,您在日常开发工作中完全可以不适用它。 - -// 条件类型看起来是这样: -// -// A extends B ? C : D -// -// 条件是某个类型是否继承某个表达式,如果是的话,返回什么类型。 - -// 让我们来看一些示例,为了简洁起见,我们将适用单个字母作为泛型的名称。 -// 这是可选的,但是我们每行的长度被限制在 60 个字母以内, -// 这使我们很难将其显示在屏幕上。 - -type Cat = { meows: true }; -type Dog = { barks: true }; -type Cheetah = { meows: true; fast: true }; -type Wolf = { barks: true; howls: true }; - -// 我们可以创建一个条件类型,该条件类型仅允许提取符合 barks 判断的类型。 - -type ExtractDogish = A extends { barks: true } ? A : never; - -// 然后我们可以创建 ExtractDogish 类型的包装: - -// 猫(cat)不能够吠(bark),因此它返回 never -type NeverCat = ExtractDogish; -// 狼(wolf)可以吠,因此它返回 wolf 。 -type Wolfish = ExtractDogish; - -// 这对您使用包含多种类型的并集类型, -// 并希望减少并集类型中可能的类型成员时很有帮助: - -type Animals = Cat | Dog | Cheetah | Wolf; - -// 当您将 ExtractDogish 应用到一个并集类型上时,可以视为对联合 -// 类型中的每一个类型成员的应用: - -type Dogish = ExtractDogish; - -// = ExtractDogish | ExtractDogish | -// ExtractDogish | ExtractDogish -// -// = never | Dog | never | Wolf -// -// = Dog | Wolf (查看 example:unknown-and-never) - -// 由于类型被分派到每一个并集类型的成员,因此被叫做条件类型分派。 - -// 延迟条件类型 - -// 条件类型可以用于改进您的 API,这些 API 可以根据不同的输入返回不同的类型。 - -// 例如这个函数的返回值是 string 还是 number 取决于传入的 boolean。 - -declare function getID(fancy: T): T extends true ? string : number; - -// 根据类型系统对 boolean 的推断,你将获得不同的返回值类型: - -let stringReturnValue = getID(true); -let numberReturnValue = getID(false); -let stringOrNumber = getID(Math.random() < 0.5); - -// 虽然在这个例子中,TypeScript 可以立即知道返回值,但是您也可以将 -// 条件类型应用到您暂时不知道类型的函数中。这被称作延迟条件类型。 - -// 与上面的 Dogish 类似,但是是一个函数。 -declare function isCatish(x: T): T extends { meows: true } ? T : undefined; - -// 条件类型还有一个额外有用的工具,它可以告诉 TypeScript 推迟时应该推断类型。 -// 那就是 “infer” 关键字。 - -// infer 通常被用来创建您现有代码中的某些元类型, -// 可以将其视为在类型内部创建新的类型变量。 - -type GetReturnValue = T extends (...args: any[]) => infer R ? R : T; - -// 大意: -// -// - 这是一个被称作 GetReturnValue 的泛型条件类型,它接收一个类型参数。 -// -// - 这个条件类型将检查如果传入的类型是一个函数,如果是,则根据函数的返回值类型 -// 创建一个名为 R 的新类型。 -// -// - 如果检查通过,整个类型的值将被推断为返回值类型,否则是原有的类型。 -// - -type getIDReturn = GetReturnValue; - -// 这将不能通过是否是一个函数的检查,并且将返回传入的类型本身。 -type getCat = GetReturnValue; diff --git a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Discriminate Types.ts b/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Discriminate Types.ts deleted file mode 100644 index e114fb642dd3..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Discriminate Types.ts +++ /dev/null @@ -1,55 +0,0 @@ -// 通过可辨识并集类型,您可以使用代码流分析将一组潜在的对象缩减为 -// 某个特定的对象。 -// -// 此模式对于具有不同 string 或 number 常量的相似对象集非常有效。 -// 例如:具名事件列表或对象的版本集。 - -type TimingEvent = { name: "start"; userStarted: boolean } | { name: "closed"; duration: number }; - -// 当一个事件传入这个函数,它可能是潜在的两种类型之一。 - -const handleEvent = (event: TimingEvent) => { - // 通过 switch 语句针对事件名(event.name)进行检查,TypeScript 的 - // 代码流分析可以确定对象只能由并集类型中的一种类型来表示。 - - switch (event.name) { - case "start": - // 这代表您可以安全的访问 userStarted,因为 name 为 “start” - // 仅在类型 TimingEvent 中出现。 - const initiatedByUser = event.userStarted; - break; - - case "closed": - const timespan = event.duration; - break; - } -}; - -// 此模式同样可以用在可辨识的数字上。 - -// 在这个例子中,我们有一个可辨识联合和一个额外的需要处理的错误状态。 - -type APIResponses = { version: 0; msg: string } | { version: 1; message: string; status: number } | { error: string }; - -const handleResponse = (response: APIResponses) => { - // 处理错误的状态并返回。 - if ("error" in response) { - console.error(response.error); - return; - } - - // TypeScript 现在已经清楚 APIResponse 不会是 error 类型。 - // 当它是 error 类型时,函数会被返回。你可以将鼠标悬停在下面的 - // response 上以验证这个结果。 - - if (response.version === 0) { - console.log(response.msg); - } else if (response.version === 1) { - console.log(response.status, response.message); - } -}; - -// 您最好使用 switch 语句而不是使用 if 语句,因为您可以保证检查了 -// 并集类型的所有部分。使用手册中的 never 类型也是一个好的模式: - -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#discriminated-unions diff --git a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Indexed Types.ts b/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Indexed Types.ts deleted file mode 100644 index abb28c086a97..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Indexed Types.ts +++ /dev/null @@ -1,32 +0,0 @@ -// 有时候您会发现自己在实现重复的类型。一个常见的 -// 例子是自动生成的 API 响应中的嵌套资源。 - -interface ArtworkSearchResponse { - artists: { - name: string; - artworks: { - name: string; - deathdate: string | null; - bio: string; - }[]; - }[]; -} - -// 如果接口是手工实现的,那么很容易会想到将 artworks 提取到一个接口中,类似于: - -interface Artwork { - name: string; - deathdate: string | null; - bio: string; -} - -// 但是在这种情况下,我们无法控制 API,并且如果我们手动创建了接口, -// 当响应的类型更改时,ArtworkSearchResponse 的 -// artworks 部分 和 Artwork 可能不同步。 - -// 解决此问题的方法是索引类型(indexed types),它与 JavaScript 可以 -// 通过字符串访问属性的方式相同。 - -type InferredArtwork = ArtworkSearchResponse["artists"][0]["artworks"][0]; - -// InferredArtwork 由查找属性并将新名称赋予被索引的类型的对应子集而得到。 diff --git a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Mapped Types.ts b/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Mapped Types.ts deleted file mode 100644 index d01682506208..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Meta-Types/Mapped Types.ts +++ /dev/null @@ -1,48 +0,0 @@ -// 映射类型(Mapped types)是通过一个类型创建另一个类型的方法。 -// 从效果上来说,它是一种转换类型。 - -// 常见的映射类型的使用场景是处理某些现有类型的部分子集。 -// 例如,有一个 API 返回 Artist 类型。 - -interface Artist { - id: number; - name: string; - bio: string; -} - -// 但是,如果要将更新的请求发送给 API,而这个请求只更新 Artist 的 -// 一个子集,则需要创建其他类型: - -interface ArtistForEdit { - id: number; - name?: string; - bio?: string; -} - -// 这很可能导致与上面的 Artist 不同步,映射类型允许你根据 -// 已有的类型创建更改的类型。 - -type MyPartialType = { - // 将 Type 的每个存在的属性转换为可选(?:)的 - [Property in keyof Type]?: Type[Property]; -}; - -// 现在我们可以使用映射类型去创建我们的修改请求接口: -type MappedArtistForEdit = MyPartialType; - -// 这接近于完美,但是这样做会允许 id 为 null,这是不应该发生的。 -// 所以,让我们使用交集类型(查看 example:union-and-intersection-types)来快速改进。 - -type MyPartialTypeForEdit = { - [Property in keyof Type]?: Type[Property]; -} & { id: number }; - -// 这将获取映射类型的结果,并且与设置了 { id: number } 的对象类型合并, -// 有效的在类型中确保了 id 的存在。 - -type CorrectMappedArtistForEdit = MyPartialTypeForEdit; - -// 这是演示映射类型工作方式的一个非常简单的例子,并且涵盖了大多数基础知识。 -// 如果你想更深入的了解更多信息,可以查看手册: -// -// https://www.typescriptlang.org/docs/handbook/advanced-types.html#mapped-types diff --git a/packages/playground-examples/copy/zh/TypeScript/Primitives/Any.ts b/packages/playground-examples/copy/zh/TypeScript/Primitives/Any.ts deleted file mode 100644 index a9b1333599ac..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Primitives/Any.ts +++ /dev/null @@ -1,44 +0,0 @@ -// Any 是 TypeScript 的一个例外,你可以用 any 来声明一段代码是 -// 类似于 JavaScript 一样动态的,或者解决类型系统的一些限制。 - -// 解析 JSON 是一个很好的例子: - -const myObject = JSON.parse("{}"); - -// Any 声明代表着 TypeScript 将认为你更了解你的代码, -// 并且认为你的代码是安全的,即使它并不一定严格正确。 -// 这段代码将会崩溃: - -myObject.x.y.z; - -// 使用 any 将会赋予你在舍弃一些类型安全性的前提下, -// 编写更接近原生 JavaScript 的代码能力。 - -// any 更像一个类型通配符,它可以允许你替换为任何类型(never 除外) -// 以使一种类型可以分配给另一种类型。 - -declare function debug(value: any): void; - -debug("a string"); -debug(23); -debug({ color: "blue" }); - -// 每个 debug 函数的调用都是合法的,因为你可以将参数中的 any -// 替换为任何其他类型来进行匹配。 - -// TypeScript 将会以不同形式来匹配 any 的位置, -// 例如将这些元组作为函数的参数: - -declare function swap(x: [number, string]): [string, number]; - -declare const pair: [any, any]; -swap(pair); - -// 对 swap 的调用是合法的,因为在将第一个 any 替换为 number, -// 第二个 any 替换为 string 后,参数可以正常被匹配到。 - -// 如果你没有了解过元组,查看: example:tuples - -// unknown 是 any 的同级别的类型,如果 any 代表着 ”我知道什么是正确的“, -// 那么 unknown 代表着 “我不确定什么是正确的,所以你需要将类型告诉 TypeScript”。 -// example:unknown-and-never diff --git a/packages/playground-examples/copy/zh/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/zh/TypeScript/Primitives/Literals.ts deleted file mode 100644 index 0a8d3d6682c7..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Primitives/Literals.ts +++ /dev/null @@ -1,60 +0,0 @@ -// TypeScript 对于代码中的字面量有一些有趣的特殊处理。 - -// 某种程度上,很大一部分支持在类型扩展和 -// 缩小(example:type-widening-and-narrowing)中被支持, -// 建议首先了解一下他们。 - -// 字面量类型是一个类型中,更具体的一个子类型。 -// 这意味着在类型系统中 “Hello World” 是一个字符串, -// 但是一个字符串并不一定是 “Hello World”。 - -const helloWorld = "Hello World"; -let hiWorld = "Hi World"; // 这里的类型是字符串,因为它是由 let 定义的。 - -// 这个函数接受所有的字符串。 -declare function allowsAnyString(arg: string); -allowsAnyString(helloWorld); -allowsAnyString(hiWorld); - -// 这个函数仅接受字符串字面量 “Hello World”。 -declare function allowsOnlyHello(arg: "Hello World"); -allowsOnlyHello(helloWorld); -allowsOnlyHello(hiWorld); - -// 它可以让你使用并集类型,定义某个 API 仅接受一些特定的字面量值。 - -declare function allowsFirstFiveNumbers(arg: 1 | 2 | 3 | 4 | 5); -allowsFirstFiveNumbers(1); -allowsFirstFiveNumbers(10); - -let potentiallyAnyNumber = 3; -allowsFirstFiveNumbers(potentiallyAnyNumber); - -// 看上去这个规则不适用于复杂的对象。 - -const myUser = { - name: "Sabrina", -}; - -// 可以看到虽然它被定义为不可变,但是它依旧 -// 将 `name: "Sabrina"` 转换为 "name: string"。 -// 这是因为 name 依旧可以被改变。 - -myUser.name = "Cynthia"; - -// 因为 myUser 的 name 属性可以被改变,TypeScript 不能在类型系统 -// 中使用字面量版本的类型。但是有一个功能可以允许你做到这一点。 - -const myUnchangingUser = { - name: "Fatma", -} as const; - -// 当 "as const" 被应用到一个对象上,它将变为一个不可变的 -// 对象字面量,而不是一个可以被改变的对象。 - -myUnchangingUser.name = "Raîssa"; - -// "as const" 是用于常量数据的好工具,并且可以使代码变为内联的字面量。 -// "as const" 同样可以用于数组。 - -const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; diff --git a/packages/playground-examples/copy/zh/TypeScript/Primitives/Union and Intersection Types.ts b/packages/playground-examples/copy/zh/TypeScript/Primitives/Union and Intersection Types.ts deleted file mode 100644 index 1c8d9ad93c9a..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Primitives/Union and Intersection Types.ts +++ /dev/null @@ -1,75 +0,0 @@ -// 类型联合 (Type unions)是用来定义一个对象可能为多个类型的情况。 - -type StringOrNumber = string | number; -type ProcessStates = "open" | "closed"; -type OddNumbersUnderTen = 1 | 3 | 5 | 7 | 9; -type AMessyUnion = "hello" | 156 | { error: true }; - -// 如果你不了解 "open"、"closed" 等字符串的用法,可以 -// 查看 example:literals - -// 我们可以将多个不同的类型混合到一个并集类型中, -// 我们把他称为 “这个值的类型是这些类型之一”。 - -// 然后 TypeScript 将会让您确认在运行时如何确定它是哪个类型的值。 - -// 并集类型有时可能被类型扩展而破坏,例如: - -type WindowStates = "open" | "closed" | "minimized" | string; - -// 如果你将鼠标悬停在上方,你可以看到 WindowStates 变为了 -// 一个字符串而不是一个并集类型。可以在这里查看:example:type-widening-and-narrowing - -// 如果说并集类型代表 “或”,那么交集类型代表 “且”。 -// 交集类型代表两个类型相交以创建一个新类型,这将会允许类型的组合。 - -interface ErrorHandling { - success: boolean; - error?: { message: string }; -} - -interface ArtworksData { - artworks: { title: string }[]; -} - -interface ArtistsData { - artists: { name: string }[]; -} - -// 这些接口由响应组合而成,他们既可以具有统一的错误处理, -// 又可以具有自己的数据。 - -type ArtworksResponse = ArtworksData & ErrorHandling; -type ArtistsResponse = ArtistsData & ErrorHandling; - -// 例如: - -const handleArtistsResponse = (response: ArtistsResponse) => { - if (response.error) { - console.error(response.error.message); - return; - } - - console.log(response.artists); -}; - -// 当对象必须含有下面的一个或两个值时,交集和并集类型的混合将会非常有用。 - -interface CreateArtistBioBase { - artistID: string; - thirdParty?: boolean; -} - -type CreateArtistBioRequest = (CreateArtistBioBase & { html: string }) | { markdown: string }; - -// 现在您只有在包含 artistID 和(html 或 markdown)时 -// 您才能创建对应的请求。 - -const workingRequest: CreateArtistBioRequest = { - artistID: "banksy", - markdown: "Banksy is an anonymous England-based graffiti artist...", -}; - -const badRequest: CreateArtistBioRequest = { - artistID: "banksy", -}; diff --git a/packages/playground-examples/copy/zh/TypeScript/Primitives/Unknown and Never.ts b/packages/playground-examples/copy/zh/TypeScript/Primitives/Unknown and Never.ts deleted file mode 100644 index 046c5bf8ffb6..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Primitives/Unknown and Never.ts +++ /dev/null @@ -1,113 +0,0 @@ -// Unknown - -// Unknown is one of those types that once it clicks, you -// can find quite a lot of uses for it. It acts like a sibling -// to the any type. Where any allows for ambiguity - unknown -// requires specifics. - -// 封装 JSON 解析器是一个不错的例子,JSON 数据可以以多种不同的形式出现, -// 并且 JSON 解析器函数的作者并不知道数据的形状。而调用解析函数的人应该知道。 - -const jsonParser = (jsonString: string) => JSON.parse(jsonString); - -const myAccount = jsonParser(`{ "name": "Dorothea" }`); - -myAccount.name; -myAccount.email; - -// 如果你将鼠标悬停在 jsonParser 上,你可以看到它的返回值类型是 any, -// myAccount 也是如此,虽然可以使用泛型来解决这个问题,但是我们也可以使用 unknown。 - -const jsonParserUnknown = (jsonString: string): unknown => JSON.parse(jsonString); - -const myOtherAccount = jsonParserUnknown(`{ "name": "Samuel" }`); - -myOtherAccount.name; - -// myOtherAccount 对象在类型声明给 TypeScript 之前不可以被使用, -// 这可以保证 API 的使用者预先考虑他们的类型。 - -type User = { name: string }; -const myUserAccount = jsonParserUnknown(`{ "name": "Samuel" }`) as User; -myUserAccount.name; - -// unknown 是一个很好的工具,可以查看这些以了解更多: -// https://mariusschulz.com/blog/the-unknown-type-in-typescript -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#new-unknown-top-type - -// Never - -// 由于 TypeScript 支持代码流分析,语言必须可以表示在逻辑上不会执行的代码。 -// 例如,这个函数将永远不会返回: - -const neverReturns = () => { - // If it throws on the first line - throw new Error("Always throws, never returns"); -}; - -// 如果你将鼠标悬停在 neverReturns 上,你可以看到它的类型是 () => never, -// 这代表着它永远不会执行。这依然可以像其他值一样传递: - -const myValue = neverReturns(); - -// 对于处理不可预测的 JavaScript 运行时行为以及当 API 的使用者不适用类型时, -// 使函数永不返回(返回 never) 非常有用。 - -const validateUser = (user: User) => { - if (user) { - return user.name !== "NaN"; - } - - // 在类型系统中,这条路径上的代码永远不会被执行,这与 neverReturns 的 - // 返回值类型 never 相匹配。 - - return neverReturns(); -}; - -// 虽然类型定义规定用户必须按类型传递参数,但是在 JavaScript 中有足够 -// 多的特殊情况,所以您不能保证这一点。 - -// 使用永不返回的函数可以允许您在一些不可能的地方上添加额外的代码。 -// 这对于提供更好的错误信息,或者释放一些诸如文件的资源或循环时非常有用。 - -// 一个非常常见的 never 的使用方法是确保 switch 是被穷尽的。 -// 也就是每个路径都有被覆盖到。 - -// 有一个枚举和一个穷尽的 switch,你可以尝试为枚举添加一个新的选项(例如 Tulip?)。 - -enum Flower { - Rose, - Rhododendron, - Violet, - Daisy, -} - -const flowerLatinName = (flower: Flower) => { - switch (flower) { - case Flower.Rose: - return "Rosa rubiginosa"; - case Flower.Rhododendron: - return "Rhododendron ferrugineum"; - case Flower.Violet: - return "Viola reichenbachiana"; - case Flower.Daisy: - return "Bellis perennis"; - - default: - const _exhaustiveCheck: never = flower; - return _exhaustiveCheck; - } -}; - -// 你会收到一个编译期错误,表示 flower 的类型不可以被转换为 never。 - -// 并集类型中的 Never - -// never 会在并集类型中被自动移除。 - -type NeverIsRemoved = string | never | number; - -// 如果你查看 NeverIsRemoved 的类型,你会看到它是 string | number。 -// 这是因为在运行时你永远不能将 never 赋值给它,所以它永远不会发生。 - -// 这个特性经常被使用到:example:conditional-types diff --git a/packages/playground-examples/copy/zh/TypeScript/README.md b/packages/playground-examples/copy/zh/TypeScript/README.md deleted file mode 100644 index 0e3421d98c05..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## TypeScript Examples - -These examples are to cover the how TypeScript extends JavaScript. - -An example should be based on a single feature or concept in TypeScript, -and provide a few angles in which you can look and play with that feature. diff --git a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Built-in Utility Types.ts b/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Built-in Utility Types.ts deleted file mode 100644 index eb87f2db7513..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Built-in Utility Types.ts +++ /dev/null @@ -1,108 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: true } } - -// 当某种类型对于大多数代码来说都非常有用时,他们就会被添加到 TypeScript -// 中并且被大家使用。这意味着您可以在代码中直接使用他们,而无需担心它们的可用性。 - -// Partial - -// 将一个类型的所有属性转换为可选的 - -interface Sticker { - id: number; - name: string; - createdAt: string; - updatedAt: string; - submitter: undefined | string; -} - -type StickerUpdateParam = Partial; - -// Readonly - -// 将一个类型的所有属性转换为只读的 - -type StickerFromAPI = Readonly; - -// Record - -// 创建一个具有 KeysFrom 列表中所有指定属性的类型,并且将他们值的类型设置为 Type - -// 列出需要哪些 key。 -type NavigationPages = "home" | "stickers" | "about" | "contact"; - -// 每个数据(上面的key ^)都需要的数据的形状。 -interface PageInfo { - title: string; - url: string; - axTitle?: string; -} - -const navigationInfo: Record = { - home: { title: "Home", url: "/" }, - about: { title: "About", url: "/about" }, - contact: { title: "Contact", url: "/contact" }, - stickers: { title: "Stickers", url: "/stickers/all" }, -}; - -// Pick - -// 由 Type 类型选取 Keys 中指定的属性并创建一个新的类型。 -// 本质上是由某种类型中提取一部分类型信息。 - -type StickerSortPreview = Pick; - -// Omit - -// 由 Type 类型排除 Keys 中指定的属性并创建一个新的类型。 -// 本质上是由某种类型中排除一部分类型信息。 - -type StickerTimeMetadata = Omit; - -// Exclude - -// 创建一个类型,其中 Type 的任何属性都与 RemoveUnion 不重合。 - -type HomeNavigationPages = Exclude; - -// Extract - -// 创建一个类型,其中 Type 的任何属性都与 MatchUnion 重合。 - -type DynamicPages = Extract; - -// NonNullable - -// 从一组类型中将 null 和 undefined 排除后创建一个类型,对有效性检查非常有用。 - -type StickerLookupResult = Sticker | undefined | null; -type ValidatedResult = NonNullable; - -// ReturnType - -// 导出一个类型的返回值类型。 - -declare function getStickerByID(id: number): Promise; -type StickerResponse = ReturnType; - -// InstanceType - -// 创建一个是某个具有构造函数的类或对象的实例的类型。 - -class StickerCollection { - stickers: Sticker[]; -} - -type CollectionItem = InstanceType; - -// Required - -// 创建一个类型,将所有 Type 的可选属性转换为必要的。 - -type AccessiblePageInfo = Required; - -// ThisType - -// 与其他类型不同,ThisType 不返回新的类型,而是操作函数定义内 this -// 的类型。您只可以在 TSConfig 中 noImplicitThis 开启的情况下使用 ThisType。 - -// https://www.typescriptlang.org/docs/handbook/utility-types.html diff --git a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Nullable Types.ts b/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Nullable Types.ts deleted file mode 100644 index 34ffe8f499e9..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Nullable Types.ts +++ /dev/null @@ -1,74 +0,0 @@ -//// { order: 3, compiler: { strictNullChecks: false } } - -// JavaScript 有两种不同的方法声明不存在的值,TypeScript 添加了额外的 -// 语法,以提供更多方法来声明某些内容声明为可选或可空。 - -// 首先,两种 JavaScript 基本类型中的不同:undefined 和 null - -// Undefined 是指找不到或无法设置某些内容 - -const emptyObj = {}; -const anUndefinedProperty: undefined = emptyObj["anything"]; - -// Null 则在明确的没有值的情况下使用 - -const searchResults = { - video: { name: "LEGO Movie" }, - text: null, - audio: { name: "LEGO Movie Soundtrack" }, -}; - -// 为什么不使用 undefined?主要原因是让您可以正确的校验 text 是否被包含。 -// 而如果 text 返回的是 undefined,那么这个值和没有被设置时相同。 - -// 这可能感觉没有什么用处,但是当转换为一个 JSON 字符串时,如果 text 是 undefined, -// 那么它将不会被包含在等效的字符串中, - -// 严格的空检查 - -// 在 TypeScript 2.0 之前,类型系统中实际上忽略了 null 和 undefined。 -// 这让 TypeScript 提供了一个更接近没有类型的 JavaScript 的开发环境。 - -// 2.0 版本添加了一个叫做 严格空检查(strictNullChecks)的编译选项, -// 这个选项要求人们将 undefined 和 null 视为需要通过代码流分析来处理的类型。 -// (更多信息可以查看 example:code-flow) - -// 一个让 TypeScript 将严格空检查打开的示例,将鼠标悬停 -// 在下面的“Potential String”上。 - -type PotentialString = string | undefined | null; - -// PotentialString 丢弃了 undefined 和 null。如果您 -// 在设置中开启严格空检查并返回这里,你可以看到悬停在 PotentialString 上时 -// 会显示完整的并集类型。 - -declare function getID(): PotentialString; - -const userID = getID(); -console.log("User Logged in: ", userID.toUpperCase()); - -// 只有在严格模式下时,以上操作会出错 ^ - -// 同样有一些方式告诉 TypeScript 你知道更多信息 -// 例如使用类型断言或通过非空断言操作符(!) - -const definitelyString1 = getID() as string; -const definitelyString2 = getID()!; - -// 或者你可以通过 if 安全地检查是否存在: - -if (userID) { - console.log(userID); -} - -// 可选属性 - -// Void - -// Void 是一个函数没有返回值时返回的类型。 - -const voidFunction = () => {}; -const resultOfVoidFunction = voidFunction(); - -// 这通常是偶然的,TypeScript 会保留 void 类型以使您得到编译错误 -// - 即使在运行时值将会是 undefined。 diff --git a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Tuples.ts b/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Tuples.ts deleted file mode 100644 index 6419f049592e..000000000000 --- a/packages/playground-examples/copy/zh/TypeScript/Type Primitives/Tuples.ts +++ /dev/null @@ -1,65 +0,0 @@ -// 通常来说,一个数组包含某个类型的一个或多个对象。TypeScript 针对包含 -// 多个类型的数组有特殊的分析,并且在数组中索引的位置非常重要。 - -// 这被称为元组(Tuples),可以将他们视为连接数据的一种 -// 方式,但是语法上来说比有键的对象简单。 - -// 你可以像创建 JavaScript 的数组一样创建一个元组。 - -const failingResponse = ["Not Found", 404]; - -// 但是你需要声明它的类型是一个元组。 - -const passingResponse: [string, number] = ["{}", 200]; - -// 如果你将鼠标悬停在两个变量的名称上,你可以看到 -// 数组((string | number)[])和元组 ([string, number])之间的不同。 - -// 对于数组来说,顺序不重要,所以任何索引上的子项都可以是 string 或 number。 -// 在元组中,顺序和长度将会得到报障。 - -if (passingResponse[1] === 200) { - const localInfo = JSON.parse(passingResponse[0]); - console.log(localInfo); -} - -// 这意味着 TypeScript 将在索引的位置提供正确的类型。如果您 -// 尝试在未声明的索引处访问对象将会引发错误。 - -passingResponse[2]; - -// 对于较短的数据组合,元组看起来是一个不错的模式。 - -type StaffAccount = [number, string, string, string?]; - -const staff: StaffAccount[] = [ - [0, "Adankwo", "adankwo.e@"], - [1, "Kanokwan", "kanokwan.s@"], - [2, "Aneurin", "aneurin.s@", "Supervisor"], -]; - -// 如果元组的开头有一组已知的类型,然后跟着未知长度,可以使用 spread 运算符 -// 来表示它可以具有任何长度,并且额外的索引将会具有指定的类型。 - -type PayStubs = [StaffAccount, ...number[]]; - -const payStubs: PayStubs[] = [ - [staff[0], 250], - [staff[1], 250, 260], - [staff[0], 300, 300, 300], -]; - -const monthOnePayments = payStubs[0][1] + payStubs[1][1] + payStubs[2][1]; -const monthTwoPayments = payStubs[1][2] + payStubs[2][2]; -const monthThreePayments = payStubs[2][2]; - -// 您可以使用元组来描述带有未知长度参数的函数: - -declare function calculatePayForEmployee(id: number, ...args: [...number[]]): number; - -calculatePayForEmployee(staff[0][0], payStubs[0][1]); -calculatePayForEmployee(staff[1][0], payStubs[1][1], payStubs[1][2]); - -// -// https://www.typescriptlang.org/docs/handbook/release-notes/typescript-3-0.html#tuples-in-rest-parameters-and-spread-expressions -// https://auth0.com/blog/typescript-3-exploring-tuples-the-unknown-type/ diff --git a/packages/playground-examples/copy/zh/sections.json b/packages/playground-examples/copy/zh/sections.json deleted file mode 100644 index 90797d767340..000000000000 --- a/packages/playground-examples/copy/zh/sections.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "sections": [ - { - "name": "JavaScript", - "id": "JavaScript", - "subtitle": "了解 TypeScript 如何使用最少的附加语法改善 JavaScript 的日常使用。" - }, - { - "name": "TypeScript", - "id": "TypeScript", - "subtitle": "探索 TypeScript 如何扩展 JavaScript,使其更安全,更便利。" - }, - { - "name": "3.7", - "id": "3.7", - "subtitle": "查看版本更新说明。" - }, - { - "name": "3.8", - "id": "3.8", - "subtitle": "查看版本更新说明。" - }, - { - "name": "游乐场 V3", - "id": "游乐场", - "subtitle": "了解游乐场有哪些变化。" - } - ], - "sortedSubSections": [ - // JS - "JavaScript 基础", - "JavaScript 中的函数", - "JavaScript 中的类", - "现代 JavaScript", - "外部 API", - "改善 JavaScript", - // TS - "基础类型", - "类型基础", - "元类型", - "语言", - "语言扩展", - // Examples - "语法和信息", - "代码和代码流", - "修复", - // Playground - "配置", - "工具", - // 3.8 - "破坏性的变化", - "JSDoc 的改进" - ] -} \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/es/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/es/categories/Additional_Checks_6176.md deleted file mode 100644 index 84d65c80fe6c..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Comprobaciones del Linter" ---- - -Una colección de comprobaciones extras, que de alguna manera cruzan los límites del compilador contra el linter. Puede que prefieras usar una herramienta como eslint sobre estas opciones si buscas reglas más completas. diff --git a/packages/tsconfig-reference/copy/es/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/es/categories/Advanced_Options_6178.md deleted file mode 100644 index d0d4f0d6c4a2..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Avanzado" ---- - -Opciones que ayudan a la depuración diff --git a/packages/tsconfig-reference/copy/es/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/es/categories/Basic_Options_6172.md deleted file mode 100644 index 34f474596412..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Opciones del Proyecto" ---- - -Estos ajustes se utilizan para definir las expectativas de tiempo de ejecución de su proyecto, cómo y dónde quiere que se emita el código JavaScript y el nivel de integración que desea con el código JavaScript existente. diff --git a/packages/tsconfig-reference/copy/es/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/es/categories/Command_line_Options_6171.md deleted file mode 100644 index 9cfc401f2f07..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Línea de comando" ---- diff --git a/packages/tsconfig-reference/copy/es/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/es/categories/Experimental_Options_6177.md deleted file mode 100644 index c043fba9a04f..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Experimental" ---- - -TypeScript se esfuerza por incluir sólo las características confirmadas para ser añadidas en el lenguaje JavaScript. - -Ha habido casos en los que una característica es lo suficientemente convincente como para ser una excepción a esa regla, y estos viven como opciones de compilación experimentales. -Es posible que una versión de estas características sea diferente a cuando se añaden al lenguaje JavaScript, y por lo tanto se consideran arriesgadas. diff --git a/packages/tsconfig-reference/copy/es/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/es/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index eea5f870ae49..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Resolución de Módulos" ---- diff --git a/packages/tsconfig-reference/copy/es/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/es/categories/Project_Files_0.md deleted file mode 100644 index cc63211591ad..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Inclusión de archivos" ---- - -Estos ajustes te ayudan a asegurarte que TypeScript elija los archivos correctos. diff --git a/packages/tsconfig-reference/copy/es/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/es/categories/Source_Map_Options_6175.md deleted file mode 100644 index 9931798bde92..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Mapas de Fuentes o 'Source Maps'" ---- - -Con el fin de proporcionar herramientas de depuración e informes de fallos que tengan sentido para los desarrolladores, TypeScript soporta la emisión de archivos adicionales que se ajustan a los estándares del Mapa de Fuentes de JavaScript. - -Estos son emitidos como archivos `.map` que se localizan junto al archivo que representan. diff --git a/packages/tsconfig-reference/copy/es/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/es/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index 5c6b37147503..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Comprobaciones Estrictas" ---- - -Recomendamos usar la opción de [compilador `strict`](#strict) para optar por todas las mejoras posibles disponibles en el desarrollo. - -TypeScript soporta un amplio espectro de patrones de JavaScript y permite por defecto bastante flexibilidad para acomodar estos estilos. -A menudo la seguridad y la potencial escalabilidad de una base de código puede estar en desacuerdo con algunas de estas técnicas. - -Debido a la variedad de JavaScript soportado, la actualización a una nueva versión de TypeScript puede descubrir dos tipos de errores: - -- Errores que ya existen en su base de código, que TypeScript ha descubierto porque el lenguaje ha refinado su comprensión de JavaScript. -- Un nuevo conjunto de errores que abordan un nuevo dominio de problemas. - -TypeScript normalmente añadirá un indicador de compilación para este último conjunto de errores, y por defecto estos no están habilitados. diff --git a/packages/tsconfig-reference/copy/es/categories/Watch_Options_999.md b/packages/tsconfig-reference/copy/es/categories/Watch_Options_999.md deleted file mode 100644 index 73b4d895ac00..000000000000 --- a/packages/tsconfig-reference/copy/es/categories/Watch_Options_999.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Opciones de Vigilancia" ---- - -TypeScript 3.8 lanzó una nueva estrategia para analizar los directorios, que es crucial para detectar eficientemente los cambios en los `node_modules`. - -En sistemas operativos como Linux, TypeScript instala vigilantes de directorios (a diferencia de vigilantes de archivos) en `node_modules` y muchos de sus subdirectorios para detectar cambios en las dependencias. -Esto se debe a que el número de vigilantes de archivos disponibles es a menudo eclipsado por el de archivos en `node_modules`, mientras que hay muchos menos directorios que rastrear. - -Debido a que cada proyecto podría funcionar mejor bajo diferentes estrategias, y este nuevo enfoque podría no funcionar bien para sus flujos de trabajo, TypeScript 3.8 introduce un nuevo campo `watchOptions` que permite a los usuarios indicar al compilador/servicio lingüístico qué estrategias de vigilancia deben ser utilizadas para mantener el seguimiento de los archivos y directorios. diff --git a/packages/tsconfig-reference/copy/es/intro.md b/packages/tsconfig-reference/copy/es/intro.md deleted file mode 100644 index 136cac0c6864..000000000000 --- a/packages/tsconfig-reference/copy/es/intro.md +++ /dev/null @@ -1,5 +0,0 @@ -## Introducción a la referencia TSConfig - -Un archivo TSConfig en un directorio indica que ese directorio es la raiz de un proyecto TypeScript or JavaScript. El archivo TSConfig puede ser tanto `tsconfig.json` o `jsconfig.json`, teniendo ambos el mismo comportamiento y el mismo conjunto de variables de configuración. - -Esta página cubre todas las diferentes opciones disponibles dentro de un archivo TSConfig. Comienza con una visión general de cada opción, luego se mueve a los atributos raíz en el archivo JSON, luego a las opciones de compilación `compilerOptions` que son el grueso principal y termina con las opciones de vigilancia `watchOptions`. diff --git a/packages/tsconfig-reference/copy/es/options/allowJs.md b/packages/tsconfig-reference/copy/es/options/allowJs.md deleted file mode 100644 index 707f9cf58202..000000000000 --- a/packages/tsconfig-reference/copy/es/options/allowJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Permitir JS" -oneline: "Permite incluir archivos .JS en las importaciones de archivos TypeScript." ---- - -Permite importar archivos JavaScript dentro de su proyecto, en lugar de sólo los archivos `.ts` y `.tsx`. Por ejemplo, este archivo JavaScript: - -```js twoslash -// @filename: card.js -export const defaultCardDeck = "Heart"; -``` - -Al ser importado en un archivo de TypeScript se producirá un error: - -```ts twoslash -// @errors: 2307 -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -Se importa sin problemas cuando se habilita la opción `allowJs` - -```ts twoslash -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @allowJs -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -Esta opción puede ser usada como una forma de agregar progresivamente archivos TypeScript en un proyecto JavaScript al permitir los archivos con extensión `.ts` y `.tsx` convivir con los archivos JavaScript existentes. diff --git a/packages/tsconfig-reference/copy/es/options/allowSyntheticDefaultImports.md b/packages/tsconfig-reference/copy/es/options/allowSyntheticDefaultImports.md deleted file mode 100644 index f153c24ebb1f..000000000000 --- a/packages/tsconfig-reference/copy/es/options/allowSyntheticDefaultImports.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -display: "Permitir las importaciones sintéticas por defecto" -oneline: "Permite 'import x from y' cuando un módulo no tiene una exportación por defecto" ---- - -Cuando está activo, `allowSyntheticDefaultImports` le permite escribir una importación de la siguiente forma: - -```ts -import React from "react"; -``` - -en vez de: - -```ts -import * as React from "react"; -``` - -Cuando el módulo **NO** contiene una exportación por defecto. - -Esto no afecta al JavaScript emitido por TypeScript, sólo para la comprobación de tipos. -Esta opción ajusta el comportamiento de TypeScript en línea con Babel, donde se emite código extra para hacer más cómoda el uso de una exportación por defecto de un módulo. diff --git a/packages/tsconfig-reference/copy/es/options/allowUmdGlobalAccess.md b/packages/tsconfig-reference/copy/es/options/allowUmdGlobalAccess.md deleted file mode 100644 index 82f8ff2ae59e..000000000000 --- a/packages/tsconfig-reference/copy/es/options/allowUmdGlobalAccess.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Permitir el acceso global a UMD" -oneline: "Asume todas las importaciones UMD como disponibles globalmente" ---- - -Cuando está activo, `allowUmdGlobalAccess` le permite acceder a las exportaciones UMD como si fueran globales dentro de los archivos del módulo. Un módulo es un archivo que tiene importaciones y/o exportaciones. Sin esta opción, el usar una exportación proveniente de un módulo UMD requerirá una declaración de tipo importación. - -Un ejemplo de caso de uso de esta opción sería un proyecto web donde se sabe que la biblioteca particular (como jQuery o Lodash) siempre estará disponible en tiempo de ejecución, pero no puedes acceder a esta con una importación. diff --git a/packages/tsconfig-reference/copy/es/options/allowUnreachableCode.md b/packages/tsconfig-reference/copy/es/options/allowUnreachableCode.md deleted file mode 100644 index 7e7cd6fcf2d7..000000000000 --- a/packages/tsconfig-reference/copy/es/options/allowUnreachableCode.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Permitir código inalcanzable" -oneline: "Muestra un error cuando el código nunca será ejecutado" ---- - -Cuando: - -- `undefined` (por defecto) proporciona sugerencias como advertencias a los editores -- `true` código inalcanzable es ignorado -- `false` genera errores de compilación cuando se detecta código inalcanzable - -Estas advertencias son sólo sobre el código que es evidentemente inalcanzable debido al uso de la sintaxis de JavaScript, por ejemplo: - -```ts -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Con la opción `"allowUnreachableCode": false`: - -```ts twoslash -// @errors: 7027 -// @allowUnreachableCode: false -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Esto no afecta a los errores sobre la base del código que _parece_ ser inalcanzable debido al análisis de tipos. diff --git a/packages/tsconfig-reference/copy/es/options/allowUnusedLabels.md b/packages/tsconfig-reference/copy/es/options/allowUnusedLabels.md deleted file mode 100644 index 92eb916de92f..000000000000 --- a/packages/tsconfig-reference/copy/es/options/allowUnusedLabels.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -display: "Permite notaciones sin utilizar" -oneline: "Muestra un error cuando accidentalmente se crea una notación" ---- - -Al configurarse como falsa, deshabilita las advertencias acerca de notaciones sin usar. - -Las notaciones son muy raras en JavaScript y tipicamente indican un intento por escribir un objeto literal: - -```ts twoslash -// @errors: 7028 -// @allowUnusedLabels: false -function verifyAge(age: number) { - // Forgot 'return' statement - if (age > 18) { - verified: true; - } -} -``` diff --git a/packages/tsconfig-reference/copy/es/options/alwaysStrict.md b/packages/tsconfig-reference/copy/es/options/alwaysStrict.md deleted file mode 100644 index 5bb1196c8006..000000000000 --- a/packages/tsconfig-reference/copy/es/options/alwaysStrict.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Siempre estricto" -oneline: "Asegura que 'use strict' siempre sea emitido" ---- - -Asegura que sus archivos son analizados en el modo estricto de ECMAScript, y emite "use strict" para cada archivo fuente. - -El modo [estricto de ECMAScript](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode) fue introducido en ES5 y y proporciona ajustes de comportamiento en el tiempo de ejecución del motor de JavaScript para mejorar el rendimiento, y hace que un conjunto de errores se lancen en lugar de ignorarlos silenciosamente. diff --git a/packages/tsconfig-reference/copy/es/options/assumeChangesOnlyAffectDirectDependencies.md b/packages/tsconfig-reference/copy/es/options/assumeChangesOnlyAffectDirectDependencies.md deleted file mode 100644 index e69988039a7f..000000000000 --- a/packages/tsconfig-reference/copy/es/options/assumeChangesOnlyAffectDirectDependencies.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Asume que los cambios sólo afectan a las dependencias directas" -oneline: "Una opción de modo de vigilancia drásticamente más rápida, pero ocasionalmente inexacta." ---- - -Cuando esta opción se encuentra activa, TypeScript evitará volver a comprobar/reconstruir todos los archivos verdaderamente afectados, y sólo volverá a comprobar/reconstruir los archivos que han cambiado, así como los archivos que los importan directamente. - -Esto puede considerarse una implementación 'rápida y suelta' del algoritmo de vigilancia, que puede reducir drásticamente los tiempos de reconstrucción incremental a expensas de tener que ejecutar la construcción completa ocasionalmente para obtener todos los mensajes de error del compilador. diff --git a/packages/tsconfig-reference/copy/es/options/baseUrl.md b/packages/tsconfig-reference/copy/es/options/baseUrl.md deleted file mode 100644 index 8698037b2285..000000000000 --- a/packages/tsconfig-reference/copy/es/options/baseUrl.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "URL Base" -oneline: "Configura una URL base para los nombres de los módulos relativos" ---- - -Le permite establecer un directorio base para resolver nombres de módulos no absolutos. - -Puede definir una carpeta raíz donde puede hacer la resolución absoluta de los archivos. Por ejemplo: - -``` -baseUrl -├── ex.ts -├── hello -│ └── world.ts -└── tsconfig.json -``` - -Con `"baseUrl": "./"` dentro de este proyecto, TypeScript TypeScript buscará los archivos que empiezan en la misma carpeta que el archivo `tsconfig.json`. - -```ts -import { helloWorld } from "hello/world"; - -console.log(helloWorld); -``` - -Si te cansas de que las importaciones siempre se vean como `"../"` o `"./"`. o que necesiten cambiarse al mover los archivos, esta es una gran manera de arreglar eso. diff --git a/packages/tsconfig-reference/copy/es/options/charset.md b/packages/tsconfig-reference/copy/es/options/charset.md deleted file mode 100644 index 0f89186f7689..000000000000 --- a/packages/tsconfig-reference/copy/es/options/charset.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Charset" -oneline: "Sin soporte. En versiones anteriores, manualmente guarda la codificación del texto para leer archivos." ---- - -En versiones anteriores de TypeScript, esto controlaba que tipo de codificación era usada para leer archivos de texto del disco duro. -Ahora, TypeScript asume codificación UTF-8, pero detectará correctamente UTF-16 (BE y LE) o BOMs UTF-8. diff --git a/packages/tsconfig-reference/copy/es/options/checkJs.md b/packages/tsconfig-reference/copy/es/options/checkJs.md deleted file mode 100644 index 1921cbdead39..000000000000 --- a/packages/tsconfig-reference/copy/es/options/checkJs.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Check JS" -oneline: "Permite el reporte de errores en archivos con extensión de JavaScript" ---- - -Trabaja en conjunto con `allowJs`. Cuando `checkJs` está habilitado entonces los errores son reportados en archivos JavaScript. Esto es el -equivalente a incluir `// @ts-check` en la parte superior de todos los archivos JavaScript que están incluidos en tu proyecto. - -Por ejemplo, lo siguiente es incorrecto de acuerdo a la definición `parseFloat` que viene con TypeScript. - -```js -// parseFloat solo toma un string -module.exports.pi = parseFloat(3.124); -``` - -Cuando es importado a un modulo TypeScript: - -```ts twoslash -// @allowJs -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` - -No obtendrás ningún error. Sin embargo, si habilitas `checkJs` entonces obtendrás mensajes de error del archivo JavaScript. - -```ts twoslash -// @errors: 2345 -// @allowjs: true -// @checkjs: true -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` diff --git a/packages/tsconfig-reference/copy/es/options/composite.md b/packages/tsconfig-reference/copy/es/options/composite.md deleted file mode 100644 index 042321d6e2ae..000000000000 --- a/packages/tsconfig-reference/copy/es/options/composite.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -display: "Composite" -oneline: "Habilita restricciones que permiten a un proyecto de TypeScript ser usado con referencias de proyectos." ---- - -La opción `composite` aplica ciertas restricciones que hacen posible para herramientas de compilado (incluyendo al mismo TypeScript, bajo el modo `--build`) rápidamente determinar si un proyecto ya ha sido compilado. - -Cuando esta configuración está habilitada: - -- El ajuste `rootDir`, si no está explícitamente establecido, se aplica como predeterminado el directorio que contenga el archivo `tsconfig.json`. - -- Todos los archivos de implementación deben coincidir por un patrón `include` o ser listados en el arreglo de `files`. Si esta restricción es infringida, `tsc` te informará cuáles archivos no fueron especificados. - -- `declaration` se predetermina a `verdadero`. - -Puedes encontrar la documentación en proyectos de TypeScript en [el manual](https://www.typescriptlang.org/docs/handbook/project-references.html). diff --git a/packages/tsconfig-reference/copy/es/options/declaration.md b/packages/tsconfig-reference/copy/es/options/declaration.md deleted file mode 100644 index 520469c7a5e4..000000000000 --- a/packages/tsconfig-reference/copy/es/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Declaration" -oneline: "Genera los archivos .d.ts de TypeScript y JavaScript en tu proyecto." ---- - -Genera los archivos `.d.ts` para cada archivo TypeScript o JavaScript dentro de tu proyecto. -Estos archivos `.d.ts` son archivos de tipo definición que describen la API externa de tu módulo. -Con los archivos `.d.ts`, herramientas como TypeScript pueden ofrecer intellisense (auto completado) y un escritura precisa para código no escrito. - -Cuando `declaration` esta establecida como `true`, al ejecutar el compilador con el siguiente código TypeScript: - -```ts twoslash -export let holaMundo = "hi"; -``` - -Generará un archivo `index.js` como el siguiente: - -```ts twoslash -// @showEmit -export let holaMundo = "hi"; -``` - -Con su correspondiente `holaMundo.d.ts`: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let holaMundo = "hi"; -``` - -Cuando se trabaja con archivos `.d.ts` para archivos JavaScript, querrás usar [`emitDeclarationOnly`](#emitDeclarationOnly) o usar [`outDir`](#outDir) para asegurarte que los archivos JavaScript no son sobre-escritos. diff --git a/packages/tsconfig-reference/copy/es/options/declarationDir.md b/packages/tsconfig-reference/copy/es/options/declarationDir.md deleted file mode 100644 index 78fa339a1557..000000000000 --- a/packages/tsconfig-reference/copy/es/options/declarationDir.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Declaration Dir" -oneline: "Especifica el directorio de salida para archivos de declaración generados." ---- - -Ofrece una manera de configurar el directorio raíz donde los archivos de declaración son emitidos. - -``` -ejemplo -├── index.ts -├── package.json -└── tsconfig.json -``` - -con `tsconfig.json`: - -```json tsconfig -{ - "compilerOptions": { - "declaration": true, - "declarationDir": "./types" - } -} -``` - -Colocaría el archivo d.ts para `index.ts` en una carpeta `types`: - -``` -ejemplo -├── index.js -├── index.ts -├── package.json -├── tsconfig.json -└── types - └── index.d.ts -``` diff --git a/packages/tsconfig-reference/copy/es/options/declarationMap.md b/packages/tsconfig-reference/copy/es/options/declarationMap.md deleted file mode 100644 index e3c2dc40c8f9..000000000000 --- a/packages/tsconfig-reference/copy/es/options/declarationMap.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Declaration Map" -oneline: "Crea un mapa de fuente para archivos d.ts" ---- - -Genera un _source map_ para los archivos `.d.ts` que representa al archivo fuente `.ts`. -Esto permite a editores de código como VS Code ir al archivo `.ts` original cuando se usan características como _Ir a definición_. - -Se recomienda fuertemente que consideres habilitar esta característica si estás usando referencias de proyectos. diff --git a/packages/tsconfig-reference/copy/es/options/diagnostics.md b/packages/tsconfig-reference/copy/es/options/diagnostics.md deleted file mode 100644 index 64aa4a5c3980..000000000000 --- a/packages/tsconfig-reference/copy/es/options/diagnostics.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Diagnostics" -oneline: "Información de rendimiento del compilador después de haber compilado." ---- - -Usado para mostrar la información de diagnóstico para depurar. Este comando es un subconjunto de [`extendedDiagnostics`](#extendedDiagnostics) que son resultados más enfocados al usuario, y más fáciles de interpretar. - -Si un ingeniero compilador de TypeScript le ha pedido que dé los resultados usando esta bandera en una compilación, en el cual no hay daño alguno al usar [`--extendedDiagnostics`](#extendedDiagnostics) en su lugar. diff --git a/packages/tsconfig-reference/copy/es/sections/compilerOptions.md b/packages/tsconfig-reference/copy/es/sections/compilerOptions.md deleted file mode 100644 index 7c93a0e68d38..000000000000 --- a/packages/tsconfig-reference/copy/es/sections/compilerOptions.md +++ /dev/null @@ -1,3 +0,0 @@ -### Opciones del compilador - -Estas opciones constituyen la mayor parte de la configuración de TypeScript y cubre cómo debe funcionar el lenguaje. diff --git a/packages/tsconfig-reference/copy/es/sections/top_level.md b/packages/tsconfig-reference/copy/es/sections/top_level.md deleted file mode 100644 index 239ab7896051..000000000000 --- a/packages/tsconfig-reference/copy/es/sections/top_level.md +++ /dev/null @@ -1,3 +0,0 @@ -### Campos raíces - -Las opciones principales son las opciones raices en el archivo TSConfig - estas opciones se relacionan con la configuración de su proyecto TypeScript o JavaScript. diff --git a/packages/tsconfig-reference/copy/es/sections/watchOptions.md b/packages/tsconfig-reference/copy/es/sections/watchOptions.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/tsconfig-reference/copy/id/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/id/categories/Additional_Checks_6176.md deleted file mode 100644 index 4115cbb07ceb..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Pemeriksaan Linter" ---- - -Sekumpulan pemeriksaan ekstra, yang agak melewati batas antara kompiler (_compiler_) vs _linter_. Anda mungkin lebih suka menggunakan alat seperti eslint daripada opsi ini jika Anda mencari aturan yang mendalam. diff --git a/packages/tsconfig-reference/copy/id/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/id/categories/Advanced_Options_6178.md deleted file mode 100644 index 7b62c88f8596..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Tingkat Lanjut" ---- - -Opsi (_flags_) yang membantu proses debug diff --git a/packages/tsconfig-reference/copy/id/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/id/categories/Basic_Options_6172.md deleted file mode 100644 index 733e4c999bce..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Opsi Proyek" ---- - -Pengaturan-pengaturan berikut digunakan untuk mendefinisikan target kompilasi dari proyek Anda, bagaimana dan dimana Anda ingin JavaScript dihasilkan dan level integrasi yang Anda inginkan dengan kode JavaScript yang telah ada. diff --git a/packages/tsconfig-reference/copy/id/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/id/categories/Command_line_Options_6171.md deleted file mode 100644 index d806aa2b4018..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Baris Perintah" ---- diff --git a/packages/tsconfig-reference/copy/id/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/id/categories/Experimental_Options_6177.md deleted file mode 100644 index 5db557211d59..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Eksperimental" ---- - -TypeScript berusaha hanya untuk menyertakan fitur-fitur yang telah terkonfirmasi akan ditambahkan pada bahasa JavaScript. - -Ada beberapa kasus dimana fitur tersebut cukup menarik untuk menjadi pengecualian pada aturan tersebut, dan fitur tersebut berada di dalam opsi kompiler eksperimental. -Mungkin versi yang terdapat pada fitur ini berbeda ketika/jika mereka ditambahkan pada bahasa JavaScript, dan oleh karena itu dianggap berisiko. diff --git a/packages/tsconfig-reference/copy/id/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/id/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index c11f58371c15..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Resolusi Modul" ---- diff --git a/packages/tsconfig-reference/copy/id/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/id/categories/Project_Files_0.md deleted file mode 100644 index ee382c196b5f..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Inklusi Berkas" ---- - -Pengaturan ini membantu Anda memastikan bahwa TypeScript mengambil berkas yang benar. diff --git a/packages/tsconfig-reference/copy/id/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/id/categories/Source_Map_Options_6175.md deleted file mode 100644 index 5cd2383d42ee..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Source Maps" ---- - -Bertujuan untuk menyediakan alat debug dan pelaporan kesalahan yang masuk akal untuk pengembang, TypeScript mendukung (untuk) menghasilkan berkas tambahan yang sesuai dengan standar JavaScript Source Map. - -Berkas tersebut dihasilkan sebagai berkas `.map` yang terletak bersamaan dengan berkas yang direpresentasikannya. diff --git a/packages/tsconfig-reference/copy/id/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/id/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index ea7386b23bd6..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Pemeriksaan Ketat" ---- - -Kami merekomendasikan (untuk) menggunakan [opsi kompiler `strict`](#strict) untuk mengikutsertakan semua kemungkinan penyempurnaan saat berkas `.ts` dikompilasi. - -TypeScript mendukung jangkauan pola JavaScript yang luas dan secara standar memperbolehkan cukup banyak fleksibilitas untuk mengakomodasi gaya ini. -Seringnya keamanaan dan potensi skalabilitas basis kode dapat berada pada posisi aneh dengan beberapa teknis berikut. - -Karena banyaknya jenis JavaScript yang didukung, pemutakhiran ke TypeScript versi terbaru dapat menghasilkan dua jenis kesalahan: - -- Kesalahan yang telah ada pada basis kode Anda, yang TypeScript telah temukan karena telah menyempurnakan pemahaman terhadap JavaScript. -- Serangkaian kesalahan baru yang mengatasi domain permasalahan baru. - -TypeScript biasanya akan menambahkan opsi kompiler untuk kesalahan yang kedua, dan biasanya (opsi tersebut) tidak dinyalakan. diff --git a/packages/tsconfig-reference/copy/id/categories/Watch_Options_999.md b/packages/tsconfig-reference/copy/id/categories/Watch_Options_999.md deleted file mode 100644 index 85350e07c6f0..000000000000 --- a/packages/tsconfig-reference/copy/id/categories/Watch_Options_999.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Opsi Pengawasan" ---- - -TypeScript 3.8 dilengkapi dengan strategi baru untuk mengawasi direktori, yang krusial menentukan perubahan secara efisien terhadap `node_modules`. - -Pada sistem operasi seperti Linux, TypeScript memasang direktori pengawas (daripada pengawas berkas) pada `node_modules` dan banyak direktori di dalamnya untuk mendeteksi perubahan pada dependensi. -Hal ini dikarenakan banyaknya pengawas berkas sering melebihi berkas-berkas yang terdapat pada `node_modules`, sedangkan ada lebih sedikit direktori untuk diawasi. - -Karena setiap proyek mungkin bekerja dengan strategi yang berbeda, dan pendekatan baru ini mungkin tidak bekerja dengan baik dengan alur kerja anda, TypeScript 3.8 memperkenalkan opsi `watchOptions` yang memungkinkan pengguna untuk memberitahu kompiler/layanan bahasa strategi pengawasan yang mana yang harus digunakan untuk mengawasi berkas dan direktori. diff --git a/packages/tsconfig-reference/copy/id/intro.md b/packages/tsconfig-reference/copy/id/intro.md deleted file mode 100644 index 677c15f4ea83..000000000000 --- a/packages/tsconfig-reference/copy/id/intro.md +++ /dev/null @@ -1,6 +0,0 @@ -## Pengantar Referensi TSConfig - -Berkas TSConfig di dalam sebuah direktori menunjukkan bahwa direktori tersebut adalah akar dari proyek TypeScript atau JavaScript. -Berkas TSConfig dapat berupa `tsconfig.json` atau `jsconfig.json`, keduanya memiliki efek serupa dan kumpulan konfigurasi variabel yang sama. - -Halaman ini mencakup semua opsi (_flag_) yang tersedia di dalam berkas TSConfig. Dimulai dari gambaran umum setiap opsi, kemudian pindah ke atribut akar pada berkas JSON, kemudian `compilerOptions` yang berisi banyak opsi dan diakhiri dengan `watchOptions`. diff --git a/packages/tsconfig-reference/copy/id/options/allowJs.md b/packages/tsconfig-reference/copy/id/options/allowJs.md deleted file mode 100644 index 79d97b32398d..000000000000 --- a/packages/tsconfig-reference/copy/id/options/allowJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Allow JS" -oneline: "Izinkan TS menyertakan berkas .JS di impor" ---- - -Izinkan berkas JavaScript diimpor ke dalam proyek Anda, bukan hanya berkas `.ts` dan`.tsx`. Contoh, berkas JS ini: - -```js twoslash -// @filename: card.js -export const defaultCardDeck = "Heart"; -``` - -Ketika diimpor ke berkas TypeScript akan menimbulkan galat seperti berikut: - -```ts twoslash -// @errors: 2307 -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -Impor berkas akan baik-baik saja saat `allowJs` diaktifkan: - -```ts twoslash -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @allowJs -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -Opsi ini dapat digunakan sebagai cara untuk menambahkan berkas TypeScript secara bertahap ke dalam proyek JS dengan mengizinkan berkas `.ts` dan`.tsx` untuk hidup berdampingan dengan berkas JavaScript yang ada. diff --git a/packages/tsconfig-reference/copy/id/options/allowSyntheticDefaultImports.md b/packages/tsconfig-reference/copy/id/options/allowSyntheticDefaultImports.md deleted file mode 100644 index c109c587c23f..000000000000 --- a/packages/tsconfig-reference/copy/id/options/allowSyntheticDefaultImports.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -display: "Izinkan Setelan Standar Impor Sintetis" -oneline: "Izinkan 'impor x dari y' jika modul tidak memiliki setelan standar ekspor" ---- - -Jika disetel ke true `allowSyntheticDefaultImports` memungkinkan Anda untuk menulis impor seperti: - -```ts -import React from "react"; -``` - -daripada: - -```ts -import * as React from "react"; -``` - -Jika modul **tidak** secara eksplisit menentukan ekspor default. - -Misalnya, tanpa`allowSyntheticDefaultImports` disetel ke _true_: - -```ts twoslash -// @errors: 1259 1192 -// @checkJs -// @allowJs -// @esModuleInterop: false -// @filename: utilFunctions.js -// @noImplicitAny: false -const getStringLength = (str) => str.length; - -module.exports = { - getStringLength, -}; - -// @filename: index.ts -import utils from "./utilFunctions"; - -const count = utils.getStringLength("Check JS"); -``` - -Kode ini menimbulkan galat karena tidak ada objek `default` yang dapat Anda impor. Meski rasanya seperti itu seharusnya. -Untuk kenyamanan, _transpiler_ seperti Babel akan secara otomatis membuat setelan standar jika tidak dibuat. Membuat modul terlihat lebih seperti: - -```js -// @filename: utilFunctions.js -const getStringLength = (str) => str.length; -const allFunctions = { - getStringLength, -}; - -module.exports = allFunctions; -module.exports.default = allFunctions; -``` - -Opsi ini tidak memengaruhi JavaScript yang dihasilkan oleh TypeScript, ini hanya untuk _type checking_. -Opsi ini membuat perilaku TypeScript sejalan dengan Babel, di mana kode ekstra akan ditambahkan kedalam setelan standar ekspor untuk membuat sebuah modul lebih ergonomis. diff --git a/packages/tsconfig-reference/copy/id/options/allowUmdGlobalAccess.md b/packages/tsconfig-reference/copy/id/options/allowUmdGlobalAccess.md deleted file mode 100644 index 2a145cfb7a81..000000000000 --- a/packages/tsconfig-reference/copy/id/options/allowUmdGlobalAccess.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Izinkan Akses Global Umd" -oneline: "Asumsikan impor UMD tersedia secara global" ---- - -Jika disetel ke _true_, `allowUmdGlobalAccess` memungkinkan Anda mengakses ekspor UMD sebagai global dari dalam berkas modul. Berkas modul adalah berkas yang telah diimpor dan/atau diekspor. Tanpa opsi ini, menggunakan ekspor dari modul UMD memerlukan deklarasi impor. - -Contoh kasus penggunaan untuk opsi ini adalah proyek web yang anda tahu bahwa pustaka tertentu (seperti jQuery atau Lodash) akan selalu tersedia saat runtime, tetapi Anda tidak dapat mengaksesnya dengan impor. diff --git a/packages/tsconfig-reference/copy/id/options/allowUnreachableCode.md b/packages/tsconfig-reference/copy/id/options/allowUnreachableCode.md deleted file mode 100644 index 3ce7b64287e8..000000000000 --- a/packages/tsconfig-reference/copy/id/options/allowUnreachableCode.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Izinkan Kode Tak Terjangkau" -oneline: "Galat ketika kode tidak akan pernah dipanggil" ---- - -Kapan: - -- `undefined` _default_ memberikan saran sebagai peringatan kepada editor -- `true` kode yang tidak dapat dijangkau diabaikan -- `false` menimbulkan galat kompiler tentang kode yang tidak dapat dijangkau - -Peringatan ini hanya tentang kode yang terbukti tidak dapat dijangkau karena penggunaan sintaks JavaScript, misalnya: - -```ts -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Dengan `"allowUnreachableCode": false`: - -```ts twoslash -// @errors: 7027 -// @allowUnreachableCode: false -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Ini tidak mempengaruhi galat atas dasar kode yang _muncul_ menjadi tidak dapat dijangkau karena menggolongkan uraian. diff --git a/packages/tsconfig-reference/copy/id/options/allowUnusedLabels.md b/packages/tsconfig-reference/copy/id/options/allowUnusedLabels.md deleted file mode 100644 index 6bb02d96af92..000000000000 --- a/packages/tsconfig-reference/copy/id/options/allowUnusedLabels.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -display: "Izinkan Label yang Tidak Digunakan" -oneline: "Galat saat tidak sengaja membuat label" ---- - -Setel ke _false_ untuk menonaktifkan peringatan tentang label yang tidak digunakan. - -Label sangat jarang di JavaScript dan biasanya menunjukkan upaya untuk menulis objek dengan tepat: - -```ts twoslash -// @errors: 7028 -// @allowUnusedLabels: false -function verifikasiUmur(umur: number) { - // Lupa menulis pernyataan 'return' - if (umur > 18) { - terverifikasi: true; - } -} -``` diff --git a/packages/tsconfig-reference/copy/id/options/alwaysStrict.md b/packages/tsconfig-reference/copy/id/options/alwaysStrict.md deleted file mode 100644 index c0f4a19d40b4..000000000000 --- a/packages/tsconfig-reference/copy/id/options/alwaysStrict.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Selalu Tepat" -oneline: "Pastikan 'use strict' selalu dikeluarkan" ---- - -Pastikan bahwa berkas Anda diurai di Mode strict EcmaScript, dan mengeluarkan "use strict" untuk setiap berkas asal. - -[ECMAScript strict](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode) mode strict diperkenalkan di ES5 dan memberikan perubahan perilaku pada waktu proses mesin JavaScript untuk meningkatkan kinerja dan membuat kesalahan muncul agar diabaikan. diff --git a/packages/tsconfig-reference/copy/id/options/assumeChangesOnlyAffectDirectDependencies.md b/packages/tsconfig-reference/copy/id/options/assumeChangesOnlyAffectDirectDependencies.md deleted file mode 100644 index c13bab148fed..000000000000 --- a/packages/tsconfig-reference/copy/id/options/assumeChangesOnlyAffectDirectDependencies.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Menganggap Perubahan Hanya Mempengaruhi Dependensi Langsung" -oneline: "Opsi mode yang lebih cepat secara drastis, tetapi terkadang tidak akurat." ---- - -Ketika opsi ini diaktifkan, TypeScript akan menghindari pemeriksaan ulang/membangun kembali semua berkas yang benar-benar mungkin terpengaruh dan hanya memeriksa ulang/membangun kembali berkas yang telah berubah serta berkas yang langsung mengimpornya. - -Ini dapat dianggap sebagai implementasi 'fast & loose' dari algoritma pengawas, yang mana bisa secara drastis dapat mengurangi waktu _rebuild_ dengan sesekali harus menjalankan _build_ lengkap untuk mendapatkan semua pesan penyusun kesalahan. diff --git a/packages/tsconfig-reference/copy/id/options/baseUrl.md b/packages/tsconfig-reference/copy/id/options/baseUrl.md deleted file mode 100644 index 6155c2100465..000000000000 --- a/packages/tsconfig-reference/copy/id/options/baseUrl.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Base Url" -oneline: "Tetapkan baseurl untuk nama modul relatif" ---- - -Memungkinkan Anda menyetel direktori dasar untuk menyelesaikan nama modul dengan benar. - -Anda dapat menentukan folder root di mana Anda dapat melakukan keputusan berkas yang sesungguhnya, misalnya : - -``` -baseUrl -├── ex.ts -├── hello -│ └── world.ts -└── tsconfig.json -``` - -Dengan `"baseUrl": "./"` di dalam proyek ini TypeScript akan mencari berkas yang dimulai dari folder yang sama dengan `tsconfig.json`. - -```ts -import { helloWorld } from "hello/world"; - -console.log(helloWorld); -``` - -Jika Anda lelah cara impor selalu seperti `"../"` atau `"./"`. Atau harus untuk merubah saat Anda memindahkan berkas, ini adalah cara terbaik untuk memperbaikinya. diff --git a/packages/tsconfig-reference/copy/id/options/charset.md b/packages/tsconfig-reference/copy/id/options/charset.md deleted file mode 100644 index 9cdaeae5d895..000000000000 --- a/packages/tsconfig-reference/copy/id/options/charset.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Charset" -oneline: "Atur pengkodean teks secara manual untuk membaca berkas" ---- - -Di TypeScript versi sebelumnya, ini mengontrol pengkodean yang digunakan saat membaca berkas teks dari memori. -Saat ini, TypeScript mengasumsikan pengkodean UTF-8, tetapi akan mendeteksi dengan benar UTF-16 (BE dan LE) atau UTF-8 BOMs. diff --git a/packages/tsconfig-reference/copy/id/options/checkJs.md b/packages/tsconfig-reference/copy/id/options/checkJs.md deleted file mode 100644 index c9a2f65b67a6..000000000000 --- a/packages/tsconfig-reference/copy/id/options/checkJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Check JS" -oneline: "Jalankan tulisan checker pada .js berkas dalam proyek Anda" ---- - -Bekerja sama dengan `allowJs`. Kapan `checkJs` diaktifkan kemudian kesalahan dilaporkan dalam berkas JavaScript. Ini termasuk `// @ts-check` di bagian atas semua berkas JavaScript yang disertakan dalam proyek Anda. - -Misalnya, ini adalah JavaScript yang salah menurut definisi jenis `parseFloat` yang disertakan dengan TypeScript: - -```js -// parseFloat only takes a string -module.exports.pi = parseFloat(3.124); -``` - -Saat diimpor ke modul TypeScript: - -```ts twoslash -// @allowJs -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` - -Anda tidak akan mendapatkan kesalahan apapun. Namun, jika Anda mengaktifkan `checkJs` maka Anda akan mendapatkan pesan kesalahan dari berkas JavaScript. - -```ts twoslash -// @errors: 2345 -// @allowjs: true -// @checkjs: true -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` diff --git a/packages/tsconfig-reference/copy/id/options/composite.md b/packages/tsconfig-reference/copy/id/options/composite.md deleted file mode 100644 index f3c8823eff1f..000000000000 --- a/packages/tsconfig-reference/copy/id/options/composite.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Composite" -oneline: "Digunakan untuk membuat banyak proyek pembangunan" ---- - -Opsi `composite` memberlakukan batasan tertentu yang memungkinkan untuk membangun (termasuk TypeScript -sendiri, di bawah mode `--build`) untuk menentukan dengan cepat apakah proyek telah dibangun. - -Saat pengaturan ini aktif: - -- Setelan `rootDir`, jika tidak disetel secara eksplisit, lokasi penyimpanan akan berisi berkas `tsconfig.json`. - -- Semua berkas implementasi harus cocok dengan sebuah `include` contoh atau terdaftar dalam aturan `files`. Jika batasan ini dilanggar, `tsc` akan memberi tahu Anda berkas mana yang tidak ditentukan. - -- `declaration` defaults ke `true` - -Anda dapat menemukan dokumentasi tentang proyek TypeScript di [the handbook](https://www.typescriptlang.org/docs/handbook/project-references.html). diff --git a/packages/tsconfig-reference/copy/id/options/declaration.md b/packages/tsconfig-reference/copy/id/options/declaration.md deleted file mode 100644 index 816b3adc738a..000000000000 --- a/packages/tsconfig-reference/copy/id/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Declaration" -oneline: "Emit berkas d.ts untuk berkas referensi dalam proyek" ---- - -Buat berkas `.d.ts` untuk setiap berkas TypeScript atau JavaScript di dalam proyek Anda. -Berkas `.d.ts` ini adalah berkas definisi tipe yang menjelaskan API eksternal modul Anda. -Dengan berkas `.d.ts`, alat seperti TypeScript dapat menyediakan tipe yang masuk akal di dalam sumber kode tanpa definisi tipe data. - -Jika `declaration` disetel ke`true`, jalankan compiler dengan kode TypeScript: - -```ts twoslash -export let helloWorld = "hi"; -``` - -Akan menghasilkan berkas `index.js` seperti ini: - -```ts twoslash -// @showEmit -export let helloWorld = "hi"; -``` - -Dengan `helloWorld.d.ts` yang sesuai: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let helloWorld = "hi"; -``` - -Saat bekerja dengan berkas `.d.ts` untuk file JavaScript, Anda mungkin ingin menggunakan [`emitDeclarationOnly`](#emitDeclarationOnly) atau menggunakan [`outDir`](#outDir) untuk memastikan bahwa berkas JavaScript tidak ditimpa. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/declarationDir.md b/packages/tsconfig-reference/copy/id/options/declarationDir.md deleted file mode 100644 index e3f3341f3647..000000000000 --- a/packages/tsconfig-reference/copy/id/options/declarationDir.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Declaration Dir" -oneline: "Atur direktori _root_ untuk berkas d.ts yang akan dituju" ---- - -Menawarkan cara untuk mengonfigurasi direktori _root_ tempat berkas deklarasi dihasilkan. - -``` -example -├── index.ts -├── package.json -└── tsconfig.json -``` - -dengan `tsconfig.json`; - -```json tsconfig -{ - "compilerOptions": { - "declaration": true, - "declarationDir": "./types" - } -} -``` - -Akan menempatkan d.ts untuk `index.ts` di direktori `types`: - -``` -example -├── index.js -├── index.ts -├── package.json -├── tsconfig.json -└── types - └── index.d.ts -``` \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/declarationMap.md b/packages/tsconfig-reference/copy/id/options/declarationMap.md deleted file mode 100644 index 0c7c24ab7d4a..000000000000 --- a/packages/tsconfig-reference/copy/id/options/declarationMap.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "_Declaration Map_" -oneline: "Buat peta sumber untuk berkas d.ts" ---- - -Menghasilkan peta sumber untuk berkas `.d.ts` yang mengarahkan kembali ke berkas sumber `.ts` asli. -Ini akan memungkinkan editor seperti VS Code untuk pergi ke file `.ts` asli saat menggunakan fitur seperti _Go to Definition_. - -Anda harus mempertimbangkan untuk mengaktifkan ini jika Anda menggunakan referensi proyek. diff --git a/packages/tsconfig-reference/copy/id/options/diagnostics.md b/packages/tsconfig-reference/copy/id/options/diagnostics.md deleted file mode 100644 index 2a0ccb270490..000000000000 --- a/packages/tsconfig-reference/copy/id/options/diagnostics.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Diagnostics" -oneline: "Mengeluarkan informasi tambahan setelah kompilasi" ---- - -Digunakan untuk mengeluarkan informasi diagnostik untuk _debugging_. Perintah ini adalah _subset_ dari [`extendedDiagnostics`](#extendedDiagnostics) yang lebih merupakan hasil yang dilihat pengguna, dan lebih mudah ditafsirkan. - -Jika Anda telah diminta oleh kompilator engineer TypeScript untuk memberikan hasil menggunakan tanda ini dalam sebuah kompilasi, di mana tidak ada salahnya menggunakan [`--extendedDiagnostics`](#extendedDiagnostics) sebagai gantinya. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/disableReferencedProjectLoad.md b/packages/tsconfig-reference/copy/id/options/disableReferencedProjectLoad.md deleted file mode 100644 index e177148fe6c4..000000000000 --- a/packages/tsconfig-reference/copy/id/options/disableReferencedProjectLoad.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "disableReferencedProjectLoad" -oneline: "Mengurangi jumlah proyek yang dimuat secara otomatis oleh TypeScript" ---- - -Dalam program TypeScript multi-proyek, TypeScript akan memuat semua proyek yang tersedia ke dalam memori untuk memberikan hasil yang akurat untuk tanggapan editor yang memerlukan grafik pengetahuan lengkap seperti 'Temukan Semua Referensi'. - -Jika proyek Anda besar, Anda dapat menggunakan saran `disableReferencedProjectLoad` untuk menonaktifkan pemuatan otomatis semua proyek. Sebaliknya, proyek dimuat secara dinamis saat Anda membuka file melalui editor Anda. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/disableSizeLimit.md b/packages/tsconfig-reference/copy/id/options/disableSizeLimit.md deleted file mode 100644 index 0ae410cbc2a6..000000000000 --- a/packages/tsconfig-reference/copy/id/options/disableSizeLimit.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Nonaktifkan Batas Ukuran" -oneline: "Menghapus batasan memori pada server bahasa TypeScript" ---- - -Untuk menghindari kemungkinan masalah pembengkakan memori saat bekerja dengan proyek JavaScript yang sangat besar, ada batas atas jumlah memori yang akan dialokasikan TypeScript. Mengaktifkan saran ini akan menghapus batas. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/disableSolutionSearching.md b/packages/tsconfig-reference/copy/id/options/disableSolutionSearching.md deleted file mode 100644 index 58bfb7938ca1..000000000000 --- a/packages/tsconfig-reference/copy/id/options/disableSolutionSearching.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Nonaktifkan Pencarian Solusi" -oneline: "Memilih proyek dari pemeriksaan referensi multi-proyek" ---- - -Saat bekerja dengan [proyek TypeScript komposit](/docs/handbook/project-references.html), opsi ini menyediakan cara untuk menyatakan bahwa Anda tidak ingin proyek disertakan saat menggunakan fitur seperti _find all reference_ atau _jump to definition_ di editor. - -Saran ini untuk sesuatu yang dapat Anda gunakan untuk meningkatkan daya tanggap dalam proyek komposit besar. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/options/disableSourceOfProjectReferenceRedirect.md b/packages/tsconfig-reference/copy/id/options/disableSourceOfProjectReferenceRedirect.md deleted file mode 100644 index 212e9f692829..000000000000 --- a/packages/tsconfig-reference/copy/id/options/disableSourceOfProjectReferenceRedirect.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Nonaktifkan Pengalihan Referensi Proyek Sumber" -oneline: "Gunakan berkas d.ts sebagai sumber kebenaran untuk perkakas antara batasan proyek gabungan" ---- - -Saat bekerja dengan [proyek TypeScript komposit](/docs/handbook/project-references.html), opsi ini menyediakan cara untuk menuju [kembali ke pra-3.7](/docs/handbook/release-notes/typescript-3-7.html#build-free-editing-with-project-references) perilaku di mana berkas d.ts digunakan sebagai batas antar modul. -Di 3.7, sumber kebenaran sekarang adalah berkas TypeScript Anda. diff --git a/packages/tsconfig-reference/copy/id/options/downlevelIteration.md b/packages/tsconfig-reference/copy/id/options/downlevelIteration.md deleted file mode 100644 index d044c9ecb7b7..000000000000 --- a/packages/tsconfig-reference/copy/id/options/downlevelIteration.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -display: "Iterasi tingkat bawah" -oneline: "Menghasilkan JavaScript yang lebih sesuai, tetapi sangat rumit untuk objek iterasi" ---- - -_Downleveling_ adalah istilah TypeScript untuk mentranspilasi ke versi JavaScript yang lebih lama. -Saran ini untuk mengaktifkan dukungan implementasi yang lebih akurat tentang bagaimana JavaScript modern melakukan iterasi melalui konsep baru di _runtime_ JavaScript yang lebih lama. - -ECMAScript 6 menambahkan beberapa iterasi primitif baru: loop `for / of` (`for (el of arr)`), Array _spread_ (`[a, ...b]`), penyebaran argumen (`fn(...args)`), dan `Symbol.iterator`. -`--downlevelIteration` memungkinkan iterasi primitif ini digunakan secara lebih akurat dalam lingkungan ES5 jika ada implementasi `Symbol.iterator`. - -#### Contoh: Efek pada `for / of` - -Tanpa `downlevelIteration` aktif, loop `for / of` pada objek apa pun diturunkan levelnya menjadi loop `for` tradisional: - -```ts twoslash -// @target: ES5 -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -Hal ini sering kali diharapkan orang, tetapi tidak 100% sesuai dengan perilaku ECMAScript 6. -String tertentu, seperti emoji (😜), memiliki `.length` 2 (atau bahkan lebih!), Tetapi harus diiterasi sebagai 1 unit dalam loop `for-of`. -Lihat [postingan blog oleh Jonathan New](https://blog.jonnew.com/posts/poo-dot-length-equals-two) untuk penjelasan yang lebih lengkap. - -Jika `downlevelIteration` diaktifkan, TypeScript akan menggunakan fungsi bantuan yang memeriksa implementasi `Symbol.iterator` (baik _native_ maupun _polyfill_). -Jika implementasi ini hilang, Anda akan kembali ke iterasi berbasis _indeks_. - -```ts twoslash -// @target: ES5 -// @downlevelIteration -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -> > **Catatan:** memungkinkan `downlevelIteration` tidak meningkatkan kepatuhan jika `Symbol.iterator` tidak ada saat runtime. - -#### Contoh: Efek pada Array _Spreads_ - -ini adalah array _spread_: - -```js -// Buat array baru yang elemennya 1 diikuti dengan elemen arr2 -const arr = [1, ...arr2]; -``` - -Berdasarkan uraian tersebut, sepertinya mudah untuk menurunkan ke ES5: - -```js -// Sama kan? -const arr = [1].concat(arr2); -``` - -Namun, ini sangat berbeda dalam kasus tertentu yang jarang terjadi. -Misalnya, jika sebuah array memiliki "lubang" di dalamnya, indeks yang hilang akan membuat properti _own_ jika disebarkan, tetapi tidak akan jika dibuat menggunakan `concat`: - -```js -// Buatlah array dimana elemen '1' hilang -let missing = [0, , 1]; -let spreaded = [...missing]; -let concated = [].concat(missing); - -// benar -"1" in spreaded; -// salah -"1" in concated; -``` - -Seperti halnya dengan `for / of`, `downlevelIteration` akan menggunakan `Symbol.iterator` (jika ada) untuk meniru perilaku ES 6 dengan lebih akurat. diff --git a/packages/tsconfig-reference/copy/id/options/emitBOM.md b/packages/tsconfig-reference/copy/id/options/emitBOM.md deleted file mode 100644 index b46b463a8535..000000000000 --- a/packages/tsconfig-reference/copy/id/options/emitBOM.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "_Emit BOM_" -oneline: "Sertakan tanda urutan byte ke berkas keluaran" ---- - -Mengontrol apakah TypeScript akan menghasilkan [tanda urutan byte (_byte order mark_ - BOM)](https://wikipedia.org/wiki/Byte_order_mark) saat menulis berkas output. -Beberapa lingkungan _runtime_ memerlukan _BOM_ untuk menafsirkan berkas JavaScript dengan benar; yang lain mengharuskan itu tidak ada. -Nilai bawaan dari `false` umumnya paling baik kecuali Anda memiliki alasan untuk mengubahnya. diff --git a/packages/tsconfig-reference/copy/id/options/emitDeclarationOnly.md b/packages/tsconfig-reference/copy/id/options/emitDeclarationOnly.md deleted file mode 100644 index 136109f4f223..000000000000 --- a/packages/tsconfig-reference/copy/id/options/emitDeclarationOnly.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Menghasilkan Deklarasi Saja" -oneline: "Hanya mengeluarkan berkas d.ts dan bukan berkas .js" ---- - -_Hanya_ menghasilkan berkas `.d.ts`; jangan mengirimkan berkas `.js`. - -Pengaturan ini berguna dalam dua kasus: - -- Anda menggunakan _transpiler_ selain TypeScript untuk membuat JavaScript Anda. -- Anda menggunakan TypeScript hanya untuk menghasilkan berkas `d.ts` untuk konsumen Anda. diff --git a/packages/tsconfig-reference/copy/id/options/emitDecoratorMetadata.md b/packages/tsconfig-reference/copy/id/options/emitDecoratorMetadata.md deleted file mode 100644 index 8bd161c07980..000000000000 --- a/packages/tsconfig-reference/copy/id/options/emitDecoratorMetadata.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Menghasilkan Dekorator Metadata" -oneline: "Menambahkan metadata jenis tambahan ke dekorator dalam kode yang dihasilkan" ---- - -Mengaktifkan dukungan eksperimental untuk menghasilkan tipe data metadata untuk dekorator yang bekerja dengan modul [`reflect-metadata`](https://www.npmjs.com/package/reflect-metadata). - -Sebagai contoh, berikut adalah JavaScript - -```ts twoslash -// @experimentalDecorators -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // do nothing - } -} - -const demo = new Demo(); -``` - -Dengan `emitDecoratorMetadata` tidak disetel ke true (bawaan): - -```ts twoslash -// @experimentalDecorators -// @showEmit -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // do nothing - } -} - -const demo = new Demo(); -``` - -Dengan `emitDecorationMetadata` di setel ke true: - -```ts twoslash -// @experimentalDecorators -// @showEmit -// @emitDecoratorMetadata -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // do nothing - } -} - -const demo = new Demo(); -``` diff --git a/packages/tsconfig-reference/copy/id/options/esModuleInterop.md b/packages/tsconfig-reference/copy/id/options/esModuleInterop.md deleted file mode 100644 index 54b95a2ae442..000000000000 --- a/packages/tsconfig-reference/copy/id/options/esModuleInterop.md +++ /dev/null @@ -1,72 +0,0 @@ ---- -display: "Interop Modul ES" -oneline: "Menghasilkan JS tambahan untuk memudahkan dukungan untuk mengimpor modul commonjs" ---- - -Secara bawaan (dengan `esModuleInterop` _false_ atau tidak disetel) TypeScript memperlakukan modul CommonJS/AMD/UMD mirip dengan modul ES6. Dalam melakukan ini, ada dua bagian tertentu yang ternyata merupakan asumsi yang salah: - -- Impor namespace seperti `import * as moment from "moment"` bertindak sama seperti `const moment = require("moment")` - -- Impor bawaan seperti `import moment from "moment"` berfungsi sama seperti `const moment = require("moment").default` - -Ketidakcocokan ini menyebabkan dua masalah berikut: - -- Spesifikasi modul ES6 menyatakan bahwa impor namespace (`import * as x`) hanya dapat menjadi objek, dengan memiliki TypeScript - memperlakukannya sama dengan `= require ("x")` maka TypeScript diizinkan untuk impor diperlakukan sebagai fungsi dan dapat dipanggil. Ini melanggar rekomendasi spesifikasi. - -- Meskipun akurat untuk spesifikasi modul ES6, sebagian besar pustaka dengan modul CommonJS/AMD/UMD tidak seketat implementasi TypeScript. - -Mengaktifkan `esModuleInterop` akan memperbaiki kedua masalah ini dalam kode yang ditranspilasi oleh TypeScript. Perubahan pertama perilaku di kompilator, yang kedua diperbaiki oleh dua fungsi pembantu baru yang menyediakan _shim_ untuk memastikan kompatibilitas dalam JavaScript yang dihasilkan: - -```ts -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -Dengan menonaktifkan `esModuleInterop`: - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop: false -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -Dengan `esModuleInterop` disetel ke `true`: - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -_Catatan_: Anda dapat meminimalisir ukuran keluaran dengan mengaktifkan [`importHelpers`](#importHelpers): - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop -// @importHelpers -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -Mengaktifkan `esModuleInterop` juga akan mengaktifkan [`allowSyntheticDefaultImports`](#allowSyntheticDefaultImports). diff --git a/packages/tsconfig-reference/copy/id/options/exclude.md b/packages/tsconfig-reference/copy/id/options/exclude.md deleted file mode 100644 index 56aa8819e7db..000000000000 --- a/packages/tsconfig-reference/copy/id/options/exclude.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Exclude" -oneline: "Berkas atau pola yang akan dilewati dari opsi sertakan" ---- - -Menentukan _array_ nama berkas atau pola yang harus dilewati saat menyelesaikan `include`. - -**Penting**: `exclude` _hanya_ mengubah berkas mana yang disertakan sebagai hasil dari pengaturan `include`. -Berkas yang ditentukan oleh `exclude` masih bisa menjadi bagian dari basis kode Anda karena pernyataan `import` dalam kode Anda, penyertaan `types`, perintah `/// - -``` -. -├── scripts ⨯ -│ ├── lint.ts ⨯ -│ ├── update_deps.ts ⨯ -│ └── utils.ts ⨯ -├── src ✓ -│ ├── client ✓ -│ │ ├── index.ts ✓ -│ │ └── utils.ts ✓ -│ ├── server ✓ -│ │ └── index.ts ✓ -├── tests ✓ -│ ├── app.test.ts ✓ -│ ├── utils.ts ✓ -│ └── tests.d.ts ✓ -├── package.json -├── tsconfig.json -└── yarn.lock -``` - -`include` dan `exclude` mendukung karakter untuk membuat pola _global_: - -- `*` cocok dengan nol atau lebih karakter (tidak termasuk pemisah direktori) -- `?` cocok dengan salah satu karakter (tidak termasuk pemisah direktori) -- `**/` cocok dengan direktori apa pun yang bertingkat. - -Jika contoh umum tidak menyertakan ekstensi berkas, maka hanya berkas dengan ekstensi yang didukung yang disertakan (misalnya `.ts`,`.tsx`, dan `.d.ts` secara default, dengan`.js` dan `. jsx` jika `allowJs` disetel ke true). diff --git a/packages/tsconfig-reference/copy/id/options/incremental.md b/packages/tsconfig-reference/copy/id/options/incremental.md deleted file mode 100644 index f2091f4c0c36..000000000000 --- a/packages/tsconfig-reference/copy/id/options/incremental.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Incremental" -oneline: "Simpan berkas .tsbuildinfo untuk kompilasi proyek secara bertahap" ---- - -Memberi tahu TypeScript untuk menyimpan informasi tentang grafik proyek dari kompilasi terakhir ke berkas yang disimpan di penyimpanan. Ini membuat serangkaian berkas `.tsbuildinfo` di folder yang sama dengan keluaran kompilasi Anda. Mereka tidak menggunakan JavaScript saat runtime dan dapat dihapus dengan aman. Anda dapat membaca lebih lanjut di [3.4 release notes](/docs/handbook/release-notes/typescript-3-4.html#faster-subsequent-builds-with-the---incremental-flag). - -Anda dapat mengontrol nama folder dengan menggunakan pilihan [`tsBuildInfoFile`](#tsBuildInfoFile). diff --git a/packages/tsconfig-reference/copy/id/options/inlineSourceMap.md b/packages/tsconfig-reference/copy/id/options/inlineSourceMap.md deleted file mode 100644 index 5abbdfe4ac7a..000000000000 --- a/packages/tsconfig-reference/copy/id/options/inlineSourceMap.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -display: "Peta Sumber Sebaris" -oneline: "Sertakan berkas peta sumber di dalam JavaScript" ---- - -Jika disetel, ketika menulis berkas `.js.map` untuk menyediakan peta sumber, TypeScript akan menyematkan konten peta sumber di berkas `.js`. -Meskipun ini menghasilkan berkas JS yang lebih besar, tapi dapat memudahkan dalam beberapa tahap. -Misalnya anda mungkin ingin mencoba berkas JS pada server web, tapi tidak mengizinkan berkas `.map` untuk ditampilkan. - -Saling terpisah dengan [`sourceMap`](#sourceMap). - -Misalnya, dengan TypeScript: - -```ts -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Di ubah menjadi JavaScript: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Kemudian aktifkan pembuatannya dengan `inlineSourceMap`, ada komentar di bagian bawah berkas yang menyertakan peta sumber untuk berkas tersebut. - -```ts twoslash -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/id/options/inlineSources.md b/packages/tsconfig-reference/copy/id/options/inlineSources.md deleted file mode 100644 index 1aeb6d0363a9..000000000000 --- a/packages/tsconfig-reference/copy/id/options/inlineSources.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -display: "Sumber Sebaris" -oneline: "Sertakan berkas peta sumber di dalam JavaScript yang tampilkan" ---- - -Jika dilihat, TypeScript akan menyertakan konten asli dari berkas `.ts` sebagai string yang disematkan di peta sumber. -Ini sering kali berguna dalam kasus yang sama seperti `inlineSourceMap`. - -Membutuhkan `sourceMap` atau `inlineSourceMap` untuk disetel. - -Misalnya, dengan TypeScript: - -```ts twoslash -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Di ubah menjadi JavaScript: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Kemudian dengan `inlineSources` dan `inlineSourceMap` diaktifkan, ada komentar di bagian bawah berkas yang menyertakan peta sumber untuk berkas tersebut. -Perhatikan bahwa ada yang berbeda di akhir [`inlineSourceMap`] (# inlineSourceMap) karena peta sumber sekarang berisi kode sumber asli. - -```ts twoslash -// @inlineSources -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/id/options/isolatedModules.md b/packages/tsconfig-reference/copy/id/options/isolatedModules.md deleted file mode 100644 index c92a5fcbe8a8..000000000000 --- a/packages/tsconfig-reference/copy/id/options/isolatedModules.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -display: "Modul Terisolasi (_Isolated Modules_)" -oneline: "Pastikan setiap berkas dapat dilihat dengan aman tanpa bergantung pada impor lain" ---- - -Meskipun Anda dapat menggunakan TypeScript untuk menghasilkan ke kode JavaScript, penggunaan _transpiler_ lain seperti [Babel](https://babeljs.io) juga umum untuk dilakukan. Namun, _transpiler_ lain hanya beroperasi di satu berkas pada satu waktu, yang berarti mereka tidak dapat menerapkan transformasi kode yang bergantung pada pemahaman sistem tipe penuh. -Pembatasan ini juga berlaku untuk API `ts.transpileModule` TypeScript yang digunakan oleh beberapa alat pengembang. - -Batasan ini dapat menyebabkan masalah waktu proses dengan beberapa fitur TypeScript seperti `const enum`s dan `namespace`s. -Pilihan `isolatedModules` memberi tahu TypeScript untuk memperingatkan Anda jika menulis kode tertentu yang tidak dapat diartikan dengan benar oleh proses transpilasi berkas tunggal. - -Itu tidak mengubah kode Anda atau mengubah perilaku proses pemeriksaan dan pengecekan kode TypeScript. - -Beberapa contoh kode yang tidak berfungsi saat `isolatedModules` diaktifkan. - -#### Ekspor Pengenal Non-Nilai - -Di TypeScript, Anda dapat mengimpor _type_ dan kemudian mengekspornya: - -```ts twoslash -// @noErrors -import { someType, someFunction } from "someModule"; - -someFunction(); - -export { someType, someFunction }; -``` - -Karena tidak ada nilai untuk `someType`, `export` yang ditampilkan tidak akan mencoba mengekspornya (ini akan menjadi galat waktu proses di JavaScript): - -```js -export { someFunction }; -``` - -_Transpiler_ satu berkas tidak tahu apakah `someType` menghasilkan nilai atau tidak, jadi itu adalah galat untuk mengekspor nama yang hanya mengacu pada sebuah tipe. - -#### Non-Module Files - -Jika `isolatedModules` dipilih, semua berkas implementasi harus dalam _modules_ (yang berarti memiliki beberapa bentuk `import` / `export`). galat terjadi jika berkas: - -```ts twoslash -// @errors: 1208 -// @isolatedModules -function fn() {} -``` - -Pembatasan ini tidak berlaku untuk berkas `.d.ts` - -#### Referensi ke anggota `const enum` - -Di TypeScript, saat mereferensikan anggota `const enum`, referensi tersebut diganti dengan nilai sebenarnya di JavaScript yang ditampilkan. - -Mengubah TypeScript: - -```ts twoslash -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -Ini untuk JavaScript: - -```ts twoslash -// @showEmit -// @removeComments -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -Tanpa pengetahuan tentang nilai anggota ini, _transpiler_ lain tidak dapat menggantikan referensi ke `Number`, yang akan menjadi galat dijalankan jika dibiarkan (karena tidak ada objek `Numbers` pada waktu proses). -Karena itu, ketika `isolatedModules` dipilih, akan terjadi galat yang mereferensikan anggota `const enum` di sekelilingnya. diff --git a/packages/tsconfig-reference/copy/id/options/jsx.md b/packages/tsconfig-reference/copy/id/options/jsx.md deleted file mode 100644 index cc166295e88e..000000000000 --- a/packages/tsconfig-reference/copy/id/options/jsx.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "JSX" -oneline: "Mengatur bagaimana JSX dihasilkan" ---- - -Mengatur bagaimana konstruksi JSX dihasilkan di dalam file Javascript. -Ini hanya akan berpengaruh pada keluaran file JS yang dimulai di file `.tsx`. - -- `react`: Menghasilkan file `.js` dengan JSX yang diubah seperti pemanggilan `React.createElement` -- `preserve`: Menghasilkan file `.jsx` tanpa mengubah JSX -- `react-native`: Menghasilkan file `.jsx` tanpa mengubah JSX diff --git a/packages/tsconfig-reference/copy/id/options/jsxFactory.md b/packages/tsconfig-reference/copy/id/options/jsxFactory.md deleted file mode 100644 index 7361ecc1546a..000000000000 --- a/packages/tsconfig-reference/copy/id/options/jsxFactory.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "JSX Factory" -oneline: "Mengatur fungsi yang dihasilkan oleh JSX" ---- - -Mengubah fungsi yang dipanggil pada file `.js` ketika melakukan kompilasi elemen-elemen JSX. -Perubahan yang paling umum adalah dengan menggunakan `"h"` atau `"preact.h"` dibandingkan penggunaan bawaan `"React.createElement"` jika menggunakan `preact`. - -Opsi ini dapat digunakan pada basis per file juga seperti halnya [Babel's `/** @jsx h */` directive](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#custom). diff --git a/packages/tsconfig-reference/copy/id/options/jsxFragmentFactory.md b/packages/tsconfig-reference/copy/id/options/jsxFragmentFactory.md deleted file mode 100644 index 4def3cc57cbb..000000000000 --- a/packages/tsconfig-reference/copy/id/options/jsxFragmentFactory.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -display: "jsxFragmentFactory" -oneline: "Menentukan pengidentifikasi fragmen JSX akan diubah seperti apa" ---- - -Menentukan fungsi penghasil fragmen JSX yang akan digunakan ketika menargetkan kompiler react JSX `jsxFactory` sudah ditentukan, misalnya seperti `Fragment`. - -Opsi ini dapat digunakan pada basis per file juga seperti halnya [Babel's `/** @jsxFrag h */` directive](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#fragments). - -Contoh dengan menggunakan TSConfig berikut ini: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment" - } -} -``` - -TSX file berikut: - -```tsx -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` - -Akan terlihat seperti: - -```tsx twoslash -// @showEmit -// @showEmittedFile: index.js -// @jsxFactory: h -// @jsxFragmentFactory: Fragment -// @noErrors -// @target: esnext -// @module: commonjs - -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` diff --git a/packages/tsconfig-reference/copy/id/options/noImplicitAny.md b/packages/tsconfig-reference/copy/id/options/noImplicitAny.md deleted file mode 100644 index c2d9aac3d6ee..000000000000 --- a/packages/tsconfig-reference/copy/id/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "No Implicit Any" -oneline: "Mencegah memperkenalkan `any` didalam basis kode milikmu saat sebuah tipe bisa di tentukan" ---- - -Di beberapa kasus, dimana tidak ada anotasi tipe yang ada, TypeScript akan kembali ke suatu tipe dari `any` untuk suatu variabel yang saat itu tidakbisa simpulkan tipenya. - -Ini dapat menyebabkan beberapa kesalahan untuk dilewatkan, sebagai contoh: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // Bukan kesalahan? - console.log(s.subtr(3)); -} -fn(42); -``` - -Menyalakan opsi `noImplicitAny` namun TypeScript akan mengeluarkan kesalahan setiap kali `any` yang ia simpulkan: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/id/options/noImplicitReturns.md b/packages/tsconfig-reference/copy/id/options/noImplicitReturns.md deleted file mode 100644 index d135bba76631..000000000000 --- a/packages/tsconfig-reference/copy/id/options/noImplicitReturns.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "No Implicit Returns" -oneline: "Memastikan semua jalur kode mengembalikan nilai di suatu fungsi" ---- - -Saat diaktifkaan, TypeScript akan melakukan pengecekan semua jalur kode di suatu fungsi untuk memastikan mereka mengembalikan suatu nilai. - -```ts twoslash -// @errors: 2366 2322 -function lookupHeadphonesManufacturer(color: "blue" | "black"): string { - if (color === "blue") { - return "beats"; - } else { - "bose"; - } -} -``` diff --git a/packages/tsconfig-reference/copy/id/options/noImplicitThis.md b/packages/tsconfig-reference/copy/id/options/noImplicitThis.md deleted file mode 100644 index 99fdcf39f2ad..000000000000 --- a/packages/tsconfig-reference/copy/id/options/noImplicitThis.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -display: "No Implicit This" -oneline: "Menimbulkan kesalahan-kesalahan saat 'this' menjadi bertipe any" ---- - -Menimbulkan kesalahan kepada pernyataan 'this' dengan tersiratnya tipe 'any'. - -Sebagai contoh, class dibawah ini mengembalikan suatu fungsi yang mencoba mengakses `this.width` dan `this.height` – tapi konteksnya -untuk `this` didalam fungsi yang didalam `getAreaFunction` ini, bukanlah instansi dari class Rectangle. - -```ts twoslash -// @errors: 2683 -class Rectangle { - width: number; - height: number; - - constructor(width: number, height: number) { - this.width = width; - this.height = height; - } - - getAreaFunction() { - return function() { - return this.width * this.height; - }; - } -} -``` diff --git a/packages/tsconfig-reference/copy/id/options/noImplicitUseStrict.md b/packages/tsconfig-reference/copy/id/options/noImplicitUseStrict.md deleted file mode 100644 index 6b339029c5ea..000000000000 --- a/packages/tsconfig-reference/copy/id/options/noImplicitUseStrict.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -display: "No Implicit Use Strict" -oneline: "Menonaktifkan 'use strict' dalam mengeluarkan JS" ---- - -Anda seharusnya tidak memerlukan ini. Secara bawaan, saat memancarkan sebuah berkas modul kepada sebuah target non-ES6, TypeScript memancarkan sebuah kata pengantar `"use strict";` di bagian atas berkas. -Ini dapat menonaktifkan setelan kata pengantar itu. - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -// @noImplicitUseStrict -// @alwaysStrict: false -export function fn() {} -``` - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -export function fn() {} -``` diff --git a/packages/tsconfig-reference/copy/id/options/out.md b/packages/tsconfig-reference/copy/id/options/out.md deleted file mode 100644 index df2b97a3fb42..000000000000 --- a/packages/tsconfig-reference/copy/id/options/out.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Out" -oneline: "Jangan menggunakan ini" ---- - -Gunakan [outFile](#outFile) sebagai gantinya. - -Opsi `out` memproses lokasi akhir dengan dengan cara yang tidak dapat diprediksi atau konsisten. -Opsi ini dipertahankan hanya untuk kompatibilitas dengan versi lama dan sudah usang. diff --git a/packages/tsconfig-reference/copy/id/options/outDir.md b/packages/tsconfig-reference/copy/id/options/outDir.md deleted file mode 100644 index 7aad7cef06d8..000000000000 --- a/packages/tsconfig-reference/copy/id/options/outDir.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Out Dir" -oneline: "Mengatur direktori keluaran untuk semua berkas yang disertakan" ---- - -Jika ditentukan, berkas-berkas `.js` (maupun `.d.ts`, `.js.map`, dsb.) akan disertakan ke dalam direktori ini. -Struktur direktori dari sumber awal berkas-berkas juga dipertahankan; lihat [rootDir](#rootDir) jika akar yang di perhitungkan bukan yang anda inginkan. - -Jika tidak ditentukan, berkas-berkas `.js` akan disertakan di direktori yang sama dengan berkas-berkas `.ts` dari mana mereka di hasilkan: - -```sh -$ tsc - -contoh -├── index.js -└── index.ts -``` - -Dengan suatu `tsconfig.json` seperti ini: - -```json tsconfig -{ - "compilerOptions": { - "outDir": "dist" - } -} -``` - -Menjalankan `tsc` dengan pengaturan ini dapat memindahkan berkas-berkas ke direktori `dist`: - -```sh -$ tsc - -contoh -├── dist -│ └── index.js -├── index.ts -└── tsconfig.json -``` diff --git a/packages/tsconfig-reference/copy/id/options/outFile.md b/packages/tsconfig-reference/copy/id/options/outFile.md deleted file mode 100644 index 7d5be10bd1c1..000000000000 --- a/packages/tsconfig-reference/copy/id/options/outFile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Out File" -oneline: "Mengeluarkan satu berkas dari semua berkas JS yang di gabungkan" ---- - -Jika ditentukan, semua berkas _global_ (non-module) akan digabung menjadi satu berkas keluaran tertentu. - -Jika `module` adalah `system` atau `amd`, semua berkas modul juga akan digabungkan menjadi berkas ini setelah semua konten global. - -Catatan: `outFile` tidak dapat digunakan kecuali `module` adalah `None`, `System`, atau `AMD`. -Opsi ini _tidak bisa_ digunakan untuk membundel modul CommonJS atau ES6. diff --git a/packages/tsconfig-reference/copy/id/options/reactNamespace.md b/packages/tsconfig-reference/copy/id/options/reactNamespace.md deleted file mode 100644 index f18251ba353a..000000000000 --- a/packages/tsconfig-reference/copy/id/options/reactNamespace.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "React Namespace" -oneline: "Menentukan objek yang dipanggil oleh 'createElement' di JSX" ---- - -Gunakan [`--jsxFactory`](#jsxFactory) sebagai gantinya. Tentukan objek yang dipanggil oleh `createElement` ketika menargetkan `react` pada berkas TSX. diff --git a/packages/tsconfig-reference/copy/id/options/references.md b/packages/tsconfig-reference/copy/id/options/references.md deleted file mode 100644 index f7c7b6375ab3..000000000000 --- a/packages/tsconfig-reference/copy/id/options/references.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Referensi" -oneline: "Menyediakan struktur untuk proyek komposit" ---- - -Referensi proyek adalah cara untuk menyusun program TypeScript Anda menjadi bagian-bagian yang lebih kecil. -Menggunakan Referensi Proyek dapat sangat meningkatkan waktu interaksi build dan editor, menerapkan pemisahan logika antar komponen, dan mengatur kode Anda dengan cara yang baru dan lebih baik. - -Anda dapat membaca lebih lanjut tentang bagaimana cara kerja referensi di bagian [Referensi Proyek](/docs/handbook/project-references.html) dari buku pegangan diff --git a/packages/tsconfig-reference/copy/id/options/removeComments.md b/packages/tsconfig-reference/copy/id/options/removeComments.md deleted file mode 100644 index 6bd19afdc557..000000000000 --- a/packages/tsconfig-reference/copy/id/options/removeComments.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -display: "Menghapus Komentar" -oneline: "Menghapus Komentar di TypeScript sehingga tidak muncul di Javascript" ---- - -Menghapus semua komentar pada berkas Typescript pada saat mengonversi ke berkas Javascript. Pengaturan bawaannya adalah `false` - -Sebagai contoh, ini adalah berkas TypeScript yang memiliki komentar JSDoc: - -```ts -/** Terjemahan dari 'Hello world' ke bahasa Indonesia */ -export const helloWorldID = "Halo Dunia"; -``` - -Ketika `removeComments` disetel ke `true`: - -```ts twoslash -// @showEmit -// @removeComments: true -/** Terjemahan dari 'Hello world' ke bahasa Indonesia */ -export const helloWorldID = "Halo Dunia"; -``` - -Tanpa menyetel `removeComments` atau menjadikannya sebagai `false`: - -```ts twoslash -// @showEmit -// @removeComments: false -/** Terjemahan dari 'Hello world' ke bahasa Indonesia */ -export const helloWorldID = "Halo Dunia"; -``` - -Artinya, komentar anda akan muncul di kode Javascript diff --git a/packages/tsconfig-reference/copy/id/options/resolveJsonModule.md b/packages/tsconfig-reference/copy/id/options/resolveJsonModule.md deleted file mode 100644 index 97d6ef87f91c..000000000000 --- a/packages/tsconfig-reference/copy/id/options/resolveJsonModule.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -display: "Menyelesaikan Module JSON" -oneline: "Memperbolehkan mengimpor berkas .json" ---- - -Memperbolehkan mengimpor modul dengan ekstensi '.json' merupakan praktik umum pada proyek node. -Ini termasuk membuat jenis untuk `import` berdasarkan bentuk JSON statis. - -TypeScript tidak mendukung penyelesaian berkas JSON secara bawaan: - -```ts twoslash -// @errors: 2732 -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` - -Mengaktifkan opsi memungkinkan impor JSON, dan memvalidasi jenis dalam berkas JSON tersebut. - -```ts twoslash -// @errors: 2367 -// @resolveJsonModule -// @module: commonjs -// @moduleResolution: node -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` diff --git a/packages/tsconfig-reference/copy/id/options/rootDir.md b/packages/tsconfig-reference/copy/id/options/rootDir.md deleted file mode 100644 index 1a35c3a2e073..000000000000 --- a/packages/tsconfig-reference/copy/id/options/rootDir.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -display: "Root Dir" -oneline: "Menyetel direktori root di dalam berkas sumber Anda" ---- - -**Bawaan**: Jalur umum terpanjang dari semua berkas masukan non-deklarasi. Jika `composite` disetel, bawaannya adalah direktori yang berisi berkas `tsconfig.json`. - -Ketika TypeScript mengkompilasi berkas, ia mempertahankan struktur direktori yang sama pada direktori keluaran seperti struktur di direktori masukan. - -Misalnya, Anda memiliki beberapa berkas masukan: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -├── types.d.ts -``` - -Kesimpulan untuk `rootDir` adalah jalur umum terpanjang dari semua berkas masukan non-deklarasi, yang dalam hal ini adalah`core/`. - -Jika nilai `outDir` anda adalah `dist`, maka TypeScript akan membuat struktur direktori seperti ini: - -``` -MyProj -├── dist -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -``` - -Namun, anda mungkin mengharapkan `core` menjadi bagian dari struktur direktori keluaran. -Dengan menyetel `rootDir: "."` pada `tsconfig.json`, TypeScript akan menghasilkan struktur direktori seperti ini: - -``` -MyProj -├── dist -│ ├── core -│ │ ├── a.js -│ │ ├── b.js -│ │ ├── sub -│ │ │ ├── c.js -``` - -Yang terpenting, `rootDir` **tidak memengaruhi berkas mana yang menjadi bagian dari kompilasi**. -`rootDir` tidak memiliki hubungan dengan pengaturan `include`, `exclude`, atau `files` pada `tsconfig.json` - -Perhatikan bahwa TypeScript tidak akan pernah menulis berkas keluaran (_file output_) ke direktori di luar dari `outDir`, dan tidak akan pernah melewatkan pengeluaran berkas. -Karena alasan ini, `rootDir` mengharuskan semua berkas yang perlu dikeluarkan berada dibawah jalur `rootDir`. - -Misalnya, Anda memiliki struktur direktori seperti ini: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -├── helpers.ts -``` - -Ini akan menimbulkan galat ketika menentukan `rootDir` sebagai `core` dan `include` sebagai `*` karena ini membuat berkas (`helpers.ts`) yang perlu diletakkan di luar dari `outDir` (yaitu `../helpers.js`) diff --git a/packages/tsconfig-reference/copy/id/options/rootDirs.md b/packages/tsconfig-reference/copy/id/options/rootDirs.md deleted file mode 100644 index 8e4f09822e34..000000000000 --- a/packages/tsconfig-reference/copy/id/options/rootDirs.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -display: "Root Dirs" -oneline: "Mengatur banyak direktori root" ---- - -Dengan menggunakan `rootDirs`, Anda dapat memberi tahu kompilator bahwa ada banyak direktori "virtual" yang bertindak sebagai salah satu akar (root). -Hal ini memungkinkan kompilator untuk menyelesaikan impor pada modul relatif dalam direktori "virtual", seolah-olah digabungkan menjadi satu direktori. - -Sebagai contoh: - -``` - src - └── views - └── view1.ts (bisa impor "./template1", "./view2`) - └── view2.ts (bisa impor "./template1", "./view1`) - - generated - └── templates - └── views - └── template1.ts (bisa impor "./view1", "./view2") -``` - -```json tsconfig -{ - "compilerOptions": { - "rootDirs": ["src/views", "generated/templates/views"] - } -} -``` - -Ini tidak memengaruhi bagaimana Typescript menghasilkan Javascript, ini hanya mengemulasi asumsi bahwa mereka akan mampu melakukan perkerjaan melalui Jalur relatif tersebut saat runtime. diff --git a/packages/tsconfig-reference/copy/id/options/skipDefaultLibCheck.md b/packages/tsconfig-reference/copy/id/options/skipDefaultLibCheck.md deleted file mode 100644 index 90707b08cd2c..000000000000 --- a/packages/tsconfig-reference/copy/id/options/skipDefaultLibCheck.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Melewati pemeriksaan pustaka bawaan" -oneline: "Gunakan SkipLibCheck sebagai gantinya" ---- - -Gunakan [`--skipLibCheck`](# skipLibCheck) sebagai gantinya. Lewati pemeriksaan jenis file deklarasi pustaka bawaan. diff --git a/packages/tsconfig-reference/copy/id/options/skipLibCheck.md b/packages/tsconfig-reference/copy/id/options/skipLibCheck.md deleted file mode 100644 index 7cec3624278b..000000000000 --- a/packages/tsconfig-reference/copy/id/options/skipLibCheck.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Melewati pengecekan pustaka" -oneline: "Melewati pengecekan jenis berkas deklarasi" ---- - -Melewati pemeriksaan jenis berkas deklarasi. - -Ini dapat menghemat waktu selama kompilasi dengan mengorbankan akurasi dari sistem type. Misalnya, dua pustaka bisa mendefinisikan dua salinan dari `type` (tipe) yang sama dengan cara yang tidak konsisten. Dibandingkan melakukan pengecekan menyeluruh pada semua berkas `d.ts`, TypeScript akan mengecek tipe data dari kode yang Anda acu secara spesifik di dalam kode sumber aplikasi. - -Kasus umum dimana Anda mungkin berpikir untuk menggunakan `skipLibCheck` adalah ketika ada dua salinan pustaka di `node_modules` Anda. Dalam kasus ini, Anda harus mempertimbangkan untuk menggunakan fitur seperti [yarn's resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/) untuk memastikan hanya ada satu salinan dependency di root Anda atau menyelidiki bagaimana cara memastikan hanya ada satu resolusi dependency untuk memperbaiki masalah tanpa ada alat tambahan. diff --git a/packages/tsconfig-reference/copy/id/options/target.md b/packages/tsconfig-reference/copy/id/options/target.md deleted file mode 100644 index 3baf1141b5b5..000000000000 --- a/packages/tsconfig-reference/copy/id/options/target.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Target" -oneline: "Menyetel versi bahasa JavaScript untuk JavaScript yang dideklarasikan dan menyertakan deklarasi pustaka yang kompatibel." ---- - -Beberapa _browser_ modern mendukung semua fitur ES6, jadi `ES6` merupakan pilihan yang baik. -Anda dapat memilih untuk menyetel sasaran yang lebih rendah apabila kode Anda diluncurkan untuk lingkungan yang lebih lama, atau sebuah sasaran yang lebih tinggi apabila kode Anda dijamin untuk dapat berjalan di lingkungan yang lebih baru. - -Pengaturan `target` mengubah fitur JS mana yang diturunkan levelnya dan mana yang dibiarkan utuh. -Sebagai contoh, sebuah _arrow_function_ `() => this` akan berubah menjadi sebuah ekspresi yang ekuivalen dengan `function` apabila `target` merupakan ES5 atau versi yang lebih rendah. - -Mengubah `target` berarti juga mengubah nilai default dari [`lib`](#lib). -Anda dapat mengatur `target` dan` lib` sesuai keinginan, tetapi Anda dapat menyetel `target` untuk alasan kenyamanan. - -Jika Anda hanya bekerja dengan Node.js, berikut adalah beberapa `target` yang direkomendasikan berdasarkan versi Node: - -| Nama | Target yang didukung | -| ------- | -------------------- | -| Node 8 | `ES2017` | -| Node 10 | `ES2018` | -| Node 12 | `ES2019` | - -Ini didasarkan pada database dukungan [node.green](https://node.green). - -Nilai khusus `ESNext` merujuk pada versi tertinggi yang didukung oleh versi TypeScript Anda. -Pengaturan ini harus dilakukan secara hati-hati, karena ini tidak berarti hal yang sama pada versi TypeScript yang berbeda dan dapat membuat peningkatan kurang dapat diprediksi. diff --git a/packages/tsconfig-reference/copy/id/options/types.md b/packages/tsconfig-reference/copy/id/options/types.md deleted file mode 100644 index 5574a197df96..000000000000 --- a/packages/tsconfig-reference/copy/id/options/types.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Types" -oneline: "Digunakan untuk membuat sebuah daftar kumpulan tipe yang diizinkan untuk diikutsertakan pada kompilasi" ---- - -Secara _default_, semua _visible package_ "`@types`" diikutsertakan dalam kompilasi Anda. -*Package* dalam `node_modules/@types` yang terletak dalam folder lain dianggap sebagai _visible_. -Sebagai contoh, *package* yang berada di `./node_modules/@types/`, `../node_modules/@types/`, `../../node_modules/@types/`, dan seterusnya dianggap sebagai _visible_. - -Jika `types` telah ditentukan, hanya *package* yang didaftarkan yang akan disertakan pada lingkup global, misalnya: - -```json tsconfig -{ - "compilerOptions": { - "types": ["node", "jest", "express"] - } -} -``` - -Berkas `tsconfig.json` ini hanya akan menyertakan `./node_modules/@types/node`, `./node_modules/@types/jest` dan `./node_modules/@types/express`. -*Package* lainnya di bawah direktori `node_modules/@types/*` tidak akan diikutsertakan. - -### Apa dampaknya? - -Opsi ini tidak memengaruhi bagaimana `@types/*` diikutsertakan dalam kode aplikasi Anda, Sebagai contoh, apabila Anda memiliki `compilerOptions` seperti di pada contoh di atas dan kode seperti berikut: - -```ts -import * as moment from "moment"; - -moment().format("MMMM Do YYYY, h:mm:ss a"); -``` - -Import `moment` akan sepenuhnya diketik. - -Ketika Anda memiliki opsi ini pada pengaturan tanpa menyertakan sebuah modul dalam _array_ `types`, maka: -- _globals_ tidak akan ditambahkan ke dalam proyek Anda (contoh: `process` pada node atau `expect` pada Jest) -- Ekspor tidak akan muncul sebagai rekomendasi _auto-import_ - -Pengaturan pada fitur ini hanya tentang menentukan `types` yang ingin Anda sertakan, sedangkan [`typeRoots`](#typeRoots) mendukung apabila Anda hanya menginginkan folder-folder tertentu saja. diff --git a/packages/tsconfig-reference/copy/id/options/watchDirectory.md b/packages/tsconfig-reference/copy/id/options/watchDirectory.md deleted file mode 100644 index e3652331b1ac..000000000000 --- a/packages/tsconfig-reference/copy/id/options/watchDirectory.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "watchDirectory" -oneline: "Menentukan bagaimana direktori-direktori diperhatikan" ---- - -Strategi untuk bagaimana seluruh direktori diperhatikan dalam sistem yang tidak memiliki fungsi pengawasan berkas secara rekursif. - -- `fixedPollingInterval`: Memeriksa setiap direktori untuk memantau perubahan beberapa kali dalam satu detik secara periodik pada interval yang telah ditentukan. -- `dynamicPriorityPolling`: Menggunakan sebuah _queue_ dinamis dimana direktori-direktori yang jarang mengalami modifikasi akan lebih jarang diperiksa. -- `useFsEvents` (the default): Mencoba menggunakan sistem operasi / kejadian asli dari sistem berkas untuk perubahan direktori. diff --git a/packages/tsconfig-reference/copy/id/options/watchFile.md b/packages/tsconfig-reference/copy/id/options/watchFile.md deleted file mode 100644 index 8853b22591d6..000000000000 --- a/packages/tsconfig-reference/copy/id/options/watchFile.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -display: "watchFile" -oneline: "Teknik apa yang harus digunakan oleh pengamat" ---- - -Strategi bagaimana setiap berkas diamati. - -- `fixedPollingInterval`: Memeriksa setiap berkas apakah terjadi perubahan pada interval waktu tertentu. -- `priorityPollingInterval`: Memeriksa setiap berkas apakah terjadi perubahan, tetapi menggunakan metode heuristik untuk memeriksa tipe berkas tertentu yang jarang berubah daripada yang lain. -- `dynamicPriorityPolling`: Menggunakan antrian dinamis dimana berkas yang jarang diubah akan jarang diperiksa. -- `useFsEvents` (the default): Berusaha menggunakan even asli sistem operasi/berkas sistem untuk memeriksa perubahan berkas. -- `useFsEventsOnParentDirectory`: Berusaha menggunakan event asli sistem operasi/berkas sistem untuk memeriksa perubahan berkas pada direktori _parent_ dari berkas tersebut. diff --git a/packages/tsconfig-reference/copy/id/sections/compilerOptions.md b/packages/tsconfig-reference/copy/id/sections/compilerOptions.md deleted file mode 100644 index bd7785d4c31f..000000000000 --- a/packages/tsconfig-reference/copy/id/sections/compilerOptions.md +++ /dev/null @@ -1,3 +0,0 @@ -### Pilihan - Pilihan Kompiler - -Banyak pilihan yang membuat jumlah besar di pengaturan Typescript's dan itu juga meliputi bagaimana bahasa seharusnya bekerja. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/sections/top_level.md b/packages/tsconfig-reference/copy/id/sections/top_level.md deleted file mode 100644 index fffe563be401..000000000000 --- a/packages/tsconfig-reference/copy/id/sections/top_level.md +++ /dev/null @@ -1,3 +0,0 @@ -### Sumber Bidang - -Memulai dari pilihan di dalam sumber TSConfig - banyak pilihan bagaimana berhubungan dengan projek Typescript atau Javascript yang kamu buat. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/id/sections/watchOptions.md b/packages/tsconfig-reference/copy/id/sections/watchOptions.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/tsconfig-reference/copy/ja/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/ja/categories/Additional_Checks_6176.md deleted file mode 100644 index 97bd7a6e6df9..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Linter Checks" ---- - -追加のチェック集です。これらのチェックは、コンパイラとリンターの境界を多少跨いでいます。より詳細なルールを探しているのであれば、これらのオプションよりもeslintのようなツールの使用を推奨します。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/ja/categories/Advanced_Options_6178.md deleted file mode 100644 index 7314919ba3df..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Advanced" ---- - -デバッグに役立つフラグです。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/ja/categories/Basic_Options_6172.md deleted file mode 100644 index 8ffbd38fc04d..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "プロジェクト設定" ---- - -これらの設定はプロジェクト実行時に期待される挙動を定義します。JavaScriptファイルがどこにどのように出力されるかや、既存JavaScriptコードとの統合レベルが設定されます。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/ja/categories/Command_line_Options_6171.md deleted file mode 100644 index 05b504fdf331..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "コマンドライン" ---- diff --git a/packages/tsconfig-reference/copy/ja/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/ja/categories/Experimental_Options_6177.md deleted file mode 100644 index be97c60cd4df..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "実験的な機能" ---- - -TypeScriptは、JavaScript言語に追加が確認されている機能のみを含めるように努めています。 - -機能がそのルールの例外となるほど説得力がある場合、実験的なコンパイラのフラグとなります。 -JavaScript言語にこれらの機能が組み込まれるときに、今のバージョンとは異なる可能性があり、その意味においてリスクと見なされるかもしれません。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/ja/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index afb8b7fdf85d..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "モジュール解決" ---- diff --git a/packages/tsconfig-reference/copy/ja/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/ja/categories/Project_Files_0.md deleted file mode 100644 index 7968bdcdc2c5..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "ファイルインクルージョン" ---- - -これらの設定はTypeScriptが適切なファイルを確実に選択できるようにします。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/ja/categories/Source_Map_Options_6175.md deleted file mode 100644 index cb0db057bb6f..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "ソースマップ" ---- - -開発者にとって有用であるリッチなデバッグツールやクラッシュレポートを提供するため、 -TypeScriptはJavaScriptのソースマップ標準に準拠したファイルを追加で出力します。 - -ソースマップは、そのソースマップが指し示す実体ファイルの隣に`.map`ファイルとして出力されます。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/ja/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index 24558138230b..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "厳密なチェック" ---- - -ビルド時に利用可能なすべての改善を有効化するため、[`strict`](#strict)オプションの利用を推奨します。 - -TypeScriptは幅広いJavaScriptパターンと、デフォルトで様々なスタイルの柔軟性を許容しています。 -コードベースの安全性と潜在的なスケーラビリティは、これらのテクニックとしばしば相反します。 - -サポートされるJavaScriptの多様さにより、TypeScriptを新しいバージョンへアップグレードすると2種類のエラーが明らかになるでしょう: - -- すでにコードベースに存在していたエラー。TypeScriptのJavaScriptに対する理解が洗練されて発見されます。 -- 新しい問題領域に取り組む一連の新しいエラー。 - -通常、TypeScriptは後者のエラーに対するコンパイラフラグを追加しますが、デフォルトでは有効化しません。 diff --git a/packages/tsconfig-reference/copy/ja/categories/Watch_Options_999.md b/packages/tsconfig-reference/copy/ja/categories/Watch_Options_999.md deleted file mode 100644 index dc7f8f4badac..000000000000 --- a/packages/tsconfig-reference/copy/ja/categories/Watch_Options_999.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Watch Options" ---- - -TypeScript 3.8 にてディレクトリを監視するための新戦略をリリースしました。これは、`node_modules` の変更を効率的に検知するために極めて重要なものです。 - -Linux のような OS において、TypeScript は 依存関係の変更を検出するために、`node_modules` と多くのサブディレクトリに、(ファイルウォッチャーではなく)ディレクトリウォッチャーをインストールします。 -なぜなら、利用できるファイルウォッチャーの数を、`node_modules` のファイル数がしばしば上回る一方で、追跡するディレクトリ数は少なく済むからです。 - -各プロジェクトは異なる戦略の下でより良く動作する可能性もあり、逆にこの新しいアプローチが一連の作業の流れでうまく動作しない可能性もあります。そのため、TypeScript 3.8 では新しく `watchOptions` フィールドが導入されました。このフィールドでは、ファイルやディレクトリを追跡する為に、どの監視戦略を使用すべきか、compiler/language serviceに伝えることができます。 diff --git a/packages/tsconfig-reference/copy/ja/intro.md b/packages/tsconfig-reference/copy/ja/intro.md deleted file mode 100644 index 38725c2966ce..000000000000 --- a/packages/tsconfig-reference/copy/ja/intro.md +++ /dev/null @@ -1,6 +0,0 @@ -## TSConfig リファレンス紹介 - -ディレクトリ内の TSConfig ファイルは、TypeScript や JavaScript のプロジェクトルートであることを示します。 -TSConfig ファイルは、`tsconfig.json` や `jsconfig.json` のいずれかが利用可能です。どちらを選んでも同じ挙動、同じ設定変数をセットできます。 - -このページは TSConfig ファイルで利用できるフラグを余す所なくカバーしています。このページは、フラグ毎の概要から始まり、JSON ファイルのルート属性、オプションの大部分を占める `compilerOptions` を説明し、最後は `watchOptions` で締めくくられます。 diff --git a/packages/tsconfig-reference/copy/ja/options/allowJs.md b/packages/tsconfig-reference/copy/ja/options/allowJs.md deleted file mode 100644 index 5f8958aabbd5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/allowJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Allow JS" -oneline: "Let TS include .JS files in imports" ---- - -`.ts`、`.tsx`ファイルだけでなく、JavaScript ファイルをプロジェクトへインポートできるようにします。例えば、次の JS ファイルを: - -```js twoslash -// @filename: card.js -export const defaultCardDeck = "Heart"; -``` - -TypeScript のファイルへインポートするとエラーとなるでしょう: - -```ts twoslash -// @errors: 2307 -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -`allowJs`を付与するとインポートは成功します: - -```ts twoslash -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @allowJs -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -このフラグを使うと、`.ts`や`.tsx`ファイルが既存の JavaScript ファイルと共存可能となり、TypeScript ファイルを JS プロジェクトへ徐々に追加できるようになります。 diff --git a/packages/tsconfig-reference/copy/ja/options/allowSyntheticDefaultImports.md b/packages/tsconfig-reference/copy/ja/options/allowSyntheticDefaultImports.md deleted file mode 100644 index 0d341a5a98a7..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/allowSyntheticDefaultImports.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -display: "Allow Synthetic Default Imports" -oneline: "Allow 'import x from y' when a module doesn't have a default export" ---- - -`allowSyntheticDefaultImports`をtrueに設定すると、次のようなインポートが可能になります: - -```ts -import React from "react"; -``` - -下記のようにする必要はありません: - -```ts -import * as React from "react"; -``` - -モジュールがdefault exportを**指定していなくても**利用可能です。 - -このオプションはTypeScriptが出力するJavaScriptへは影響しません。型チェックにのみ影響があります。 -このオプションにより、モジュールのdefault exportを自然に扱えるようにする追加コードが出力されている環境では、TypeScriptとBabelの挙動が揃います。 diff --git a/packages/tsconfig-reference/copy/ja/options/allowUmdGlobalAccess.md b/packages/tsconfig-reference/copy/ja/options/allowUmdGlobalAccess.md deleted file mode 100644 index 9e340b042045..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/allowUmdGlobalAccess.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Allow Umd Global Access" -oneline: "Assume UMD imports are all globally available" ---- - -`allowUmdGlobalAccess`をtrueに設定すると、モジュールの内部からUMDへグローバルにアクセスできるようになります。モジュールファイルとは、importやexportを使っているファイルのことです。このフラグを利用しない場合、UMDモジュールを利用するにはimport宣言文が必要です。 - -このフラグの利用例は、特定のライブラリ(jQueryやLodashなど)が常に実行時に利用可能であると分かっているが、import文ではそのライブラリにアクセスできないようなwebプロジェクトです。 diff --git a/packages/tsconfig-reference/copy/ja/options/allowUnreachableCode.md b/packages/tsconfig-reference/copy/ja/options/allowUnreachableCode.md deleted file mode 100644 index a77b1dd54e28..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/allowUnreachableCode.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -display: "Allow Unreachable Code" -oneline: "Error when code will never be called" ---- - -false に設定すると、到達不可能なコードに対する警告を無効化します。 -この警告は、JavaScript 構文の利用によって到達不可能になり得るコードにのみ関係します。例えば: - -```ts -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -`"allowUnreachableCode": false`にすると、次のようになります: - -```ts twoslash -// @errors: 7027 -// @allowUnreachableCode: false -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -このオプションは、型の分析によって到達不可能と判断されたコードについてのエラーには影響しません。 diff --git a/packages/tsconfig-reference/copy/ja/options/allowUnusedLabels.md b/packages/tsconfig-reference/copy/ja/options/allowUnusedLabels.md deleted file mode 100644 index 91f025f36888..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/allowUnusedLabels.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -display: "Allow Unused Labels" -oneline: "Error when accidentally creating a label" ---- - -falseにセットすると、利用していないLabelについての警告を無効化します。 - -JavaScriptにおいてLabelを利用することは稀ですが、オブジェクトリテラルを記述しようとしたときにLabel構文になってしまうことがあります。 - -```ts twoslash -// @errors: 7028 -// @allowUnusedLabels: false -function verifyAge(age: number) { - // 'return'の記述が抜けている - if (age > 18) { - verified: true; - } -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/alwaysStrict.md b/packages/tsconfig-reference/copy/ja/options/alwaysStrict.md deleted file mode 100644 index 79c82a3a4cd9..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/alwaysStrict.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Always Strict" -oneline: "Ensure 'use strict' is always emitted" ---- - -ファイルをECMAScriptのstrictモードで解釈し、各ファイルへ"use strict"を出力することを保証します。 - -[ECMAScript strict](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode)モードはES5で導入され、JavaScriptエンジンが実行時にパフォーマンスを改善できるよう微調整されます。代わりにいくつかのエラーが無視されずにスローされるようになります。 diff --git a/packages/tsconfig-reference/copy/ja/options/assumeChangesOnlyAffectDirectDependencies.md b/packages/tsconfig-reference/copy/ja/options/assumeChangesOnlyAffectDirectDependencies.md deleted file mode 100644 index d7bf2caad512..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/assumeChangesOnlyAffectDirectDependencies.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Assume Changes Only Affect Direct Dependencies" -oneline: "A drastically faster, but occasionally inaccurate watch mode option." ---- - -このオプションを設定すると、TypeScriptは本当に影響を受ける可能性があるすべてのファイルの再チェック/再ビルドを避け、変更されたファイルとそれらを直接importしているファイルのみを再チェック/再ビルドするようになります。 - -これは監視アルゴリズムの「高速で緩い」実装と見なせます。これにより、すべてのコンパイルエラーメッセージを得るためにフルビルドが必要になりますが、インクリメンタルビルドの再ビルド時間を大幅に短縮できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/baseUrl.md b/packages/tsconfig-reference/copy/ja/options/baseUrl.md deleted file mode 100644 index 88edbe72552f..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/baseUrl.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -display: "Base Url" -oneline: "Set a baseurl for relative module names" ---- - -絶対パス参照でないモジュール名を解決するための基点となるディレクトリを設定できます。 - -絶対パスで解決するために、ルートフォルダを決めることもできます。すなわち、 - -``` -baseUrl -├── ex.ts -├── hello -│ └── world.ts -└── tsconfig.json -``` - -`"baseUrl": "./"`とすると、このプロジェクト内では、TypeScriptは`tsconfig.json`と同じフォルダからファイルの探索を行います。 - -```ts -import { helloWorld } from "hello/world"; - -console.log(helloWorld); -``` - -`"../"`や`"./"`のような毎度のインポート文にうんざりしていたり、 -ファイルを移動するときにインポート文を変更する必要がある場合、このオプションは修正するための良い方法です。 diff --git a/packages/tsconfig-reference/copy/ja/options/charset.md b/packages/tsconfig-reference/copy/ja/options/charset.md deleted file mode 100644 index c37182be5b11..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/charset.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Charset" -oneline: "Manually set the text encoding for reading files" ---- - -以前のTypeScriptのバージョンでは、このオプションでディスクからどのエンコードでファイルを読み込むかを制御していました。 -今のTypeScriptはUTF-8でエンコードされていることを前提としています。ただし、UTF-16(BEおよびLE)またはUTF-8のBOMを正しく検出します。 diff --git a/packages/tsconfig-reference/copy/ja/options/checkJs.md b/packages/tsconfig-reference/copy/ja/options/checkJs.md deleted file mode 100644 index 00ea307cbb23..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/checkJs.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Check JS" -oneline: "Run the type checker on .js files in your project" ---- - -`allowJs`と連携動作します。`checkJs`が有効化されている場合、JavaScriptファイル内のエラーが報告されるようになります。 -これは、プロジェクトに含まれるすべてのJavaScriptファイルの先頭で`// @ts-check`を付与することと等価です。 - -例えば、TypeScriptの`parseFloat`定義から、次の例は誤ったJavaScriptです。 - -```js -// parseFloatはstringのみを受け付けます -module.exports.pi = parseFloat(3.124); -``` - -このファイルがTypeScriptのモジュールにインポートされた場合: - -```ts twoslash -// @allowJs -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` - -いかなるエラーも報告されません。しかし、もし`checkJs`を有効化すれば、JavaScriptファイルで発生したエラーメッセージを受け取れるようになります。 - -```ts twoslash -// @errors: 2345 -// @allowjs: true -// @checkjs: true -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/composite.md b/packages/tsconfig-reference/copy/ja/options/composite.md deleted file mode 100644 index 16c90cac0c9d..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/composite.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Composite" -oneline: "Used to create multiple build projects" ---- - -`composite`オプションは、ビルドツール(`--build`モードでのTypeScript自体を含む) -がプロジェクトがビルドされているかどうかを迅速に判断できるようにするために特定の制約を適用します。 - -この設定が有効なとき: - -- 明示的に設定されていない`rootDir`のデフォルト値は`tsconfig.json`ファイルを含むディレクトリとなります。 - -- すべての実装ファイルは、`include`パターンにマッチするか`files`リストに含まれなくてはなりません。この制約に違反した場合、`tsc`はどのファイルが指定されていないかを通知します。 - -- `declaration`のデフォルト値が`true`になります。 - -TypeScriptのプロジェクト機能についてのドキュメントは[ハンドブック](https://www.typescriptlang.org/docs/handbook/project-references.html)から参照できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/declaration.md b/packages/tsconfig-reference/copy/ja/options/declaration.md deleted file mode 100644 index 96b6ede47738..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Declaration" -oneline: "Emit d.ts files for referenced files in the project" ---- - -プロジェクト内のすべてのTypeScriptファイルとJavaScriptファイルについて、`d.ts`ファイルを生成します。 -生成された`d.ts`ファイルはモジュールの外部APIを記述する定義ファイルです。 -`d.ts`ファイルを用いると、TypeScriptなどのツールは、型指定されていないコードに対して、Intelisenceや正確な型定義を提供できるようになります。 - -`declaration`を`true`に設定している場合、次のTypeScriptコードに対してコンパイラーを実行すると: - -```ts twoslash -export let helloWorld = "hi"; -``` - -次のような`index.js`ファイルが生成されます: - -```ts twoslash -// @showEmit -export let helloWorld = "hi"; -``` - -対応する`helloWorld.d.ts`ファイルは次のとおりです: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let helloWorld = "hi"; -``` - -JavaScriptファイルに対応する`.d.ts`を利用する場合、[`emitDeclarationOnly`](#emitDeclarationOnly)や[`outDir`](#outDir)を設定することでJavaScriptファイルを上書きしないようにできます。 diff --git a/packages/tsconfig-reference/copy/ja/options/declarationDir.md b/packages/tsconfig-reference/copy/ja/options/declarationDir.md deleted file mode 100644 index 1c585990d5f4..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/declarationDir.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Declaration Dir" -oneline: "Set the root directory for d.ts files to go" ---- - -型定義ファイルが出力されるルートディレクトリを設定します。 - -``` -example -├── index.ts -├── package.json -└── tsconfig.json -``` - -次の`tsconfig.json`は: - -```json tsconfig -{ - "compilerOptions": { - "declaration": true, - "declarationDir": "./types" - } -} -``` - -`index.ts`に対応する d.ts ファイルを`types`フォルダへ配置します: - -``` -example -├── index.js -├── index.ts -├── package.json -├── tsconfig.json -└── types - └── index.d.ts -``` diff --git a/packages/tsconfig-reference/copy/ja/options/declarationMap.md b/packages/tsconfig-reference/copy/ja/options/declarationMap.md deleted file mode 100644 index 3b7fa6ee9fd0..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/declarationMap.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Declaration Map" -oneline: "Create sourcemaps for d.ts files" ---- - -元の`.ts`ソースファイルにマップされる`.d.ts`のソースマップを生成します。 - -これにより、VS Codeなどのエディターは、_Go to Definition_のような機能で元の`.ts`ファイルにジャンプできるようになります。 - -プエジェクト参照機能を利用している場合、このオプションの有効化を強く推奨します。 diff --git a/packages/tsconfig-reference/copy/ja/options/diagnostics.md b/packages/tsconfig-reference/copy/ja/options/diagnostics.md deleted file mode 100644 index 43f6c6197c5f..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/diagnostics.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Diagnostics" -oneline: "Output additional information after a compile" ---- - -デバッグ用にコンパイラからの診断情報を出力するために使用されていました。このコマンドはよりユーザー向けの結果かつ分かりやすい[`extendedDiagnostics`](#extendedDiagnostics)のサブセットです。 - -TypeScriptのコンパイラエンジニアからこのフラグを用いて結果を提供するように依頼された場合、代わりに[`--extendedDiagnostics`](#extendedDiagnostics)を用いても問題ありません。 diff --git a/packages/tsconfig-reference/copy/ja/options/disableReferencedProjectLoad.md b/packages/tsconfig-reference/copy/ja/options/disableReferencedProjectLoad.md deleted file mode 100644 index bd3c8bb46a46..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/disableReferencedProjectLoad.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "disableReferencedProjectLoad" -oneline: "Reduces the number of projects loaded automatically by TypeScript" ---- - -複数プロジェクトのTypeScriptプログラムでは、TypeScriptは利用可能なすべてのプロジェクトをメモリに読み込みます。これにより、「すべての参照元を検索」のような完全なナレッジグラフを必要とするエディタのレスポンスに対して正確な結果を提供することができます。 - -プロジェクトが大規模な場合は、`disableReferencedProjectLoad`フラグを使用してすべてのプロジェクトの自動読み込みを無効にすることができます。代わりに、エディタでファイルを開いたときに動的にプロジェクトが読み込まれます。 diff --git a/packages/tsconfig-reference/copy/ja/options/disableSizeLimit.md b/packages/tsconfig-reference/copy/ja/options/disableSizeLimit.md deleted file mode 100644 index 593dfda61021..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/disableSizeLimit.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Disable Size Limit" -oneline: "Remove the memory cap on the TypeScript language server" ---- - -非常に大規模なJavaScriptプロジェクトで作業するときに発生する可能性のある使用メモリの膨張を避けるために、TypeScriptが割り当てられるメモリの量には上限があります。このフラグを設定すると、この制限を取り除きます。 diff --git a/packages/tsconfig-reference/copy/ja/options/disableSolutionSearching.md b/packages/tsconfig-reference/copy/ja/options/disableSolutionSearching.md deleted file mode 100644 index 6cd6a8363df0..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/disableSolutionSearching.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Disable Solution Searching" -oneline: " Opt a project out of multi-project reference checking" ---- - -[複合TypeScriptプロジェクト](/docs/handbook/project-references.html)で作業する場合、このオプションはエディタで_find all references_や_定義へ移動_などの機能を使う際に含めたくないプロジェクトを宣言する方法を提供します。 - -このフラグは大規模な複合プロジェクトで応答性を高めるために使用できるものです。 diff --git a/packages/tsconfig-reference/copy/ja/options/disableSourceOfProjectReferenceRedirect.md b/packages/tsconfig-reference/copy/ja/options/disableSourceOfProjectReferenceRedirect.md deleted file mode 100644 index 873df055af93..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/disableSourceOfProjectReferenceRedirect.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Disable Source Project Reference Redirect" -oneline: "Use d.ts files as the source of truth for tooling between composite project boundries" ---- - -[複合TypeScriptプロジェクト](/docs/handbook/project-references.html)で作業する場合、このオプションはモジュール間の境界としてd.tsファイルが使用されていた[3.7以前](/docs/handbook/release-notes/typescript-3-7.html#build-free-editing-with-project-references)の挙動に戻す方法を提供します。 -3.7にて、信頼できる情報源はTypeScriptのファイルになりました。 diff --git a/packages/tsconfig-reference/copy/ja/options/downlevelIteration.md b/packages/tsconfig-reference/copy/ja/options/downlevelIteration.md deleted file mode 100644 index 0c561a93331c..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/downlevelIteration.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -display: "Downlevel Iteration" -oneline: "Emit more compliant, but verbose JavaScript for iterating objects" ---- - -ダウンレベル化は、古いバージョンのJavaScriptにトランスパイルするという意味のTypeScriptの用語です。 -このフラグは、モダンなJavaScriptにおける新しいコンセプトの反復処理が古いJavaScriptでの実行時にどのように実装されるかについて、より正確なサポートを有効化します。 - -ECMAScript 6では、いくつかの新しい反復処理のための基本構文が加えられました: `for / of`ループ(`for (el of arr)`)、配列のスプレッド(`[a, ...b]`)、引数のスプレッド(`fn(...args)`)、`Symbol.iterator`です。 -`--downlevelIteration`は、`Symbol.iterator`の実装が存在している場合、ES5環境におけるこれらの基本的な反復処理をより正確に利用可能になります。 - -#### 例: `for / of`での効果 - -`downlevelIteration`が無効であるとき、任意のオブジェクトに対する`for / of`ループは旧来の`for`ループへダウンレベルトランスパイルされます: - -```ts twoslash -// @target: ES5 -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -これは大概の場合で期待通りの結果となりますが、ECMAScript 6の挙動と100%合致しているわけではありません。 -特定の文字列、たとえば絵文字(😜)は、`.length`は2(もしくはそれ以上!)ですが、`for-of`ループでは1文字分として反復されねばなりません。 -より詳細な解説は[Jonathan Newによるblog](https://blog.jonnew.com/posts/poo-dot-length-equals-two)を参照してください。 - -`downlevelIteration`が有効であるとき、TypeScriptは`Symbol.iterator`の実装(ネイティブまたはポリフィル)をチェックするヘルパー関数を利用します。 -もし実装が存在しなければ、indexを利用する反復処理へフォールバックします。 - -```ts twoslash -// @target: ES5 -// @downlevelIteration -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -> > **Note:** `Symbol.iterator`が実行時に存在しない場合、`downlevelIteration`はECMAScriptへの準拠を保証しません。 - -#### 例: 配列のスプレッドに対する効果 - -次のスプレッドされた配列について: - -```js -// 要素が1で、その後にarr2の要素が続く新しい配列を作成します -const arr = [1, ...arr2]; -``` - -説明に沿って、次のようにES5へダウンレベル化できます: - -```js -// 同じですよね? -const arr = [1].concat(arr2); -``` - -しかし、これは特定の稀なケースにおいてはっきりとした違いがあります。 -例えば、配列に「穴」がある場合、スプレッドでは欠落したインデックスが_独自の_プロパティとして作成されますが、`concat`を利用した場合は作成されません: - -```js -// 「1」の要素が欠落している配列を作成します -let missing = [0, , 1]; -let spreaded = [...missing]; -let concated = [].concat(missing); - -// true -"1" in spreaded; -// false -"1" in concated; -``` - -`for / of`と同様、`downlevelIteration`は(利用可能であれば)`Symbol.iterator`を使い、より正確にES6の挙動を模倣します。 diff --git a/packages/tsconfig-reference/copy/ja/options/emitBOM.md b/packages/tsconfig-reference/copy/ja/options/emitBOM.md deleted file mode 100644 index 26250968b9e9..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/emitBOM.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Emit BOM" -oneline: "Include a byte order mark to output files" ---- - -TypeScriptがファイルを書き込むときに[バイトオーダーマーク(BOM)](https://wikipedia.org/wiki/Byte_order_mark)を出力するかどうかを制御します。 -一部の実行環境ではJavaScriptファイルを正しく解釈するために、BOMが必要となりますが、他の実行環境ではBOMの存在を許容しません。 -デフォルト値の`false`は一般的に最適な値ですが、必要であれば変更できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/emitDeclarationOnly.md b/packages/tsconfig-reference/copy/ja/options/emitDeclarationOnly.md deleted file mode 100644 index 25ccfd3ed798..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/emitDeclarationOnly.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Emit Declaration Only" -oneline: "Only output d.ts files and not .js files" ---- - -`.d.ts`ファイル_のみ_を出力します; `.js`ファイルは出力しません。 - -この設定は2つのケースで有用です: - -- JavaScriptを生成するために、TypeScript以外のトランスパイラを使っているとき -- 利用者向けに`d.ts`ファイルを出力するためだけにTypeScriptを使っているとき diff --git a/packages/tsconfig-reference/copy/ja/options/emitDecoratorMetadata.md b/packages/tsconfig-reference/copy/ja/options/emitDecoratorMetadata.md deleted file mode 100644 index d1e5239ecff2..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/emitDecoratorMetadata.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Emit Decorator Metadata" -oneline: "Adds additional type metadata to decorators in emitted code" ---- - -[`reflect-metadata`](https://www.npmjs.com/package/reflect-metadata)モジュールとともに動作するデコレータのメタ情報を出力するための実験的なサポートを有効化します。 - -例えば、次のJavaScriptについて、 - -```ts twoslash -// @experimentalDecorators -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // do nothing - } -} - -const demo = new Demo(); -``` - -`emitDecoratorMetadata`がtrueに設定されていない場合(デフォルト)、次のようになります: - -```ts twoslash -// @experimentalDecorators -// @showEmit -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // 何もしない - } -} - -const demo = new Demo(); -``` - -`emitDecoratorMetadata`がtrueに設定されている場合は、次のようになります: - -```ts twoslash -// @experimentalDecorators -// @showEmit -// @emitDecoratorMetadata -function LogMethod(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) { - console.log(target); - console.log(propertyKey); - console.log(descriptor); -} - -class Demo { - @LogMethod - public foo(bar: number) { - // 何もしない - } -} - -const demo = new Demo(); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/esModuleInterop.md b/packages/tsconfig-reference/copy/ja/options/esModuleInterop.md deleted file mode 100644 index 559e3b719c26..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/esModuleInterop.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -display: "ES Module Interop" -oneline: "Emit additional JS to ease support for importing commonjs modules" ---- - -すべてのインポートに対して Namespace オブジェクトを生成することによって、CommonJS と ES Modules 間で相互運用可能なコードを出力します。 - -TypeScript は EcmaScript のモジュール標準に準拠しています。 -つまり、`import React from "react"`のような構文をサポートするには、そのファイルに具体的な`default` export が含まれている必要があります。 -CommonJS のモジュールでは、このエクスポートの方法は稀です。`esModuleInterop`が true でなければ: - -```ts twoslash -// @errors: 1259 1192 -// @checkJs -// @allowJs -// @allowSyntheticDefaultImports -// @filename: utilFunctions.js -// @noImplicitAny: false -const getStringLength = (str) => str.length; - -module.exports = { - getStringLength, -}; - -// @filename: index.ts -import utils from "./utilFunctions"; - -const count = utils.getStringLength("Check JS"); -``` - -インポート可能なオブジェクトに`default`が無いため、このコードは動作しないでしょう。このコードが動作するように見えたとしても、です。 -Babel のようなトランスパイラは、利便のために default が存在しない場合に自動で作成します。モジュールを次のようにするのです: - -```js -// @filename: utilFunctions.js -const getStringLength = (str) => str.length; -const allFunctions = { - getStringLength, -}; - -module.exports = allFunctions; -``` - -このコンパイラフラグを有効化すると、[`allowSyntheticDefaultImports`](#allowSyntheticDefaultImports)も有効化されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/exclude.md b/packages/tsconfig-reference/copy/ja/options/exclude.md deleted file mode 100644 index 216b38df6543..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/exclude.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Exclude" -oneline: "Files or patterns to be skipped from the include option" ---- - -`include`の解決時にスキップさせるファイル名やパターンのリストを指定します。 - -**重要**: `exclude`は`include`の結果として、どのファイルが含まれるべきか_のみ_に影響を与えます。 -`exclude`に指定されたファイルは、コードでの`import`や`types`でのインクルード、`/// - -``` -. -├── scripts ⨯ -│ ├── lint.ts ⨯ -│ ├── update_deps.ts ⨯ -│ └── utils.ts ⨯ -├── src ✓ -│ ├── client ✓ -│ │ ├── index.ts ✓ -│ │ └── utils.ts ✓ -│ ├── server ✓ -│ │ └── index.ts ✓ -├── tests ✓ -│ ├── app.test.ts ✓ -│ ├── utils.ts ✓ -│ └── tests.d.ts ✓ -├── package.json -├── tsconfig.json -└── yarn.lock -``` - -`include`と`exclude`はグロブパターンのためのワイルドカードをサポートしています: - -- `*` ゼロ個以上の文字列にマッチ(ディレクトリセパレータは除く) -- `?` 任意の1文字にマッチ(ディレクトリセパレータは除く) -- `**/` 任意階層の任意ディレクトリにマッチ - -グロブパターンがファイルの拡張子を含まない場合、サポートされる拡張子のみが含まれるようになります(例:`.ts`、`.tsx`と`.d.ts`はデフォルトでインクルードされ、`.js`と`.jsx`は`allowJs`が設定された場合のみインクルードされます)。 diff --git a/packages/tsconfig-reference/copy/ja/options/incremental.md b/packages/tsconfig-reference/copy/ja/options/incremental.md deleted file mode 100644 index f0a7c565b851..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/incremental.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Incremental" -oneline: "Save .tsbuildinfo files to allow for incremental compilation of projects" ---- - -最新のコンパイルでのプロジェクトグラフ情報をディスクにファイルとして保存するようにTypeScriptに指示します。 -このオプションはコンパイルの出力先として指定されたフォルダに `.tsbuildinfo` のファイル群を作成します。 -これらのファイルはコンパイルされたJavaScriptが実行時に利用することはなく、安全に削除できます。このフラグの詳細については[3.4 リリースノート](/docs/handbook/release-notes/typescript-3-4.html#faster-subsequent-builds-with-the---incremental-flag)で確認できます。 - -このファイル群の出力先フォルダを設定する場合、[`tsBuildInfoFile`](#tsBuildInfoFile)オプションを利用してください。 diff --git a/packages/tsconfig-reference/copy/ja/options/inlineSourceMap.md b/packages/tsconfig-reference/copy/ja/options/inlineSourceMap.md deleted file mode 100644 index 4690572e61b0..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/inlineSourceMap.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -display: "Inline Source Map" -oneline: "Include sourcemap files inside the emitted JavaScript" ---- - -設定すると、TypeScript はソースマップを`.js.map`ファイルへ出力するのではなく、ソースマップの内容を`.js`ファイルに埋め込みます。 -この結果、JS ファイルはより大きくなりますが、いくつかのシナリオにおいては便利です。 -例えば、`.map`ファイルの提供が許可されていない web サーバーで JS ファイルをデバッグしたい、という場合です。 - -このオプションは、[`sourceMap`](#sourceMap)とは互いに排他的にです。 - -例えば、次の TypeScript は: - -```ts -const helloWorld = "hi"; -console.log(helloWorld); -``` - -次の JavaScript に変換されます: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -`inlineSourceMap`を有効にしてビルドすると、 -ファイルの末尾にこのファイルのソースマップを含んだコメントが出力されます。 - -```ts twoslash -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/inlineSources.md b/packages/tsconfig-reference/copy/ja/options/inlineSources.md deleted file mode 100644 index 0460a45f6ac4..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/inlineSources.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Inline Sources" -oneline: "Include sourcemap files inside the emitted JavaScript" ---- - -設定すると、TypeScript は元の`.ts`ファイルの内容を文字列としてソースマップに埋め込みます。 -このオプションは`inlineSourceMap`と同様のケースで有用です。 - -`sourceMap`または`inlineSourceMap`のいずれかが設定されている必要があります。 - -例えば、次の TypeScript について: - -```ts twoslash -const helloWorld = "hi"; -console.log(helloWorld); -``` - -デフォルトでは、次の JavaScript に変換されます: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -`inlineSources`と`inlineSourceMap`を有効にしてビルドすると、 -ファイルの末尾にこのファイルのソースマップを含んだコメントが付きます。 -このソースマップは元となったソースコードも含んでいるため、[`inlineSourceMap`](#inlineSourceMap)の例とは異なる点に留意してください。 - -```ts twoslash -// @inlineSources -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/isolatedModules.md b/packages/tsconfig-reference/copy/ja/options/isolatedModules.md deleted file mode 100644 index 13e7e4774cc6..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/isolatedModules.md +++ /dev/null @@ -1,76 +0,0 @@ ---- -display: "Isolated Modules" -oneline: "Ensure that each file can be safely transpiled without relying on other imports" ---- - -TypeScriptをTypeScriptコードからJavaScriptコードを生成する用途で利用可能な一方、[Babel](https://babeljs.io)などの他のトランスパイラの利用も一般的です。 -しかし、他のトランスパイラは一度に1ファイルのみを扱うため、全体の型システムの知識に依存したコード変換はできません。 -ビルドツールで用いられるTypeScriptの`ts.transpileModule`APIについても、この制約が課せられます。 - -この制限は、TypeScriptの`const enum`や`namespace`のような機能を利用したときに実行時の問題を引き起こします。 -`isolatedModules`フラグは、単一ファイルのトランスパイル処理で正しく解釈できないコードが書かれたときに、TypeScriptが警告を与えるように設定します。 - -このフラグは、コードの挙動を変更せず、また、TypeScriptのチェック・出力プロセスの挙動も変更しません。 - -`isolatedModules`が有効な場合に機能しないコードをいくつか例示します。 - -#### 値でない識別子のエクスポート - -TypeScriptでは、_型_をインポートしてからエクスポートできます: - -```ts twoslash -// @noErrors -import { someType, someFunction } from "someModule"; - -someFunction(); - -export { someType, someFunction }; -``` - -`someType`という値は存在しないため、出力された`export`文はエクスポートを試行しません(これはJavaScriptの実行時エラーになります): - - -```js -export { someFunction }; -``` - -単一ファイルのトランスパイラは、`someType`が値なのかどうかを知らないため、型のみを参照した名前をエクスポートするエラーになります。 - -#### Moduleでないファイル - -`isolatedModules`が設定されている場合、すべての実装ファイルは_Module_でなくてはなりません(`import`/`export`の形式を利用しているという意味)。ファイルがModuleでない場合、エラーが発生します。 - -```ts twoslash -// @errors: 1208 -// @isolatedModules -function fn() {} -``` - -この制約は`.d.ts`ファイルには適用されません。 - -#### `const enum`メンバーへの参照 - -TypeScriptでは、`const enum`のメンバへ参照すると、出力されるJavaScriptでは、その参照は実際の値へと置換されます。TypeScriptによる変換は次のようになります: - -```ts twoslash -declare const enum Numbers { - Zero = 0, - One = 1 -} -console.log(Numbers.Zero + Numbers.One); -``` - -JavaScriptでは: - -```ts twoslash -// @showEmit -// @removeComments -declare const enum Numbers { - Zero = 0, - One = 1 -} -console.log(Numbers.Zero + Numbers.One); -``` - -他のトランスパイラはメンバー値の知識無しに`Numbers`への参照を置換できません。これが取り残されると、実行時のエラーとなります(なぜなら`Numbers`オブジェクトは実行時に存在しないからです)。 -したがって、`isolatedModules`が設定されている場合、`const enum`メンバーへのアンビエント参照はエラーとなります。 diff --git a/packages/tsconfig-reference/copy/ja/options/jsx.md b/packages/tsconfig-reference/copy/ja/options/jsx.md deleted file mode 100644 index 587363dfca33..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/jsx.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "JSX" -oneline: "Control how JSX is emitted" ---- - -JSX構文がどのようにJavaScriptファイルに出力されるかを設定します。 -`.tsx`で終わるファイルのJS出力にのみ影響します。 - -- `preserve`: JSXを変更せずに`.jsx`ファイルを出力します -- `react`: JSXを等価な`react.createElement`に変換して`.js`ファイルを出力します -- `react-native`: JSXを変更せずに、`.js`ファイルを出力します diff --git a/packages/tsconfig-reference/copy/ja/options/jsxFactory.md b/packages/tsconfig-reference/copy/ja/options/jsxFactory.md deleted file mode 100644 index f88327c712d5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/jsxFactory.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "JSX Factory" -oneline: "Control the function emitted by JSX" ---- - -JSX要素がコンパイルされるときの`.js`ファイルで呼び出される関数を変更します。 -`preact`を使う場合に、デフォルトの`"React.createElement"`の代わりに`"h"`や`"preact.h"`に変更するのが一般的な変更です。 - -このオプションは[Babelにおける`/** @jsx h */`ディレクティブ](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#custom)と同じものです。 diff --git a/packages/tsconfig-reference/copy/ja/options/jsxFragmentFactory.md b/packages/tsconfig-reference/copy/ja/options/jsxFragmentFactory.md deleted file mode 100644 index 276b55caa90b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/jsxFragmentFactory.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "jsxFragmentFactory" -oneline: "Specify the JSX Fragment reference to use for fragements when targeting React JSX emit, e.g. 'React.Fragment' or 'Fragment'." ---- - -コンパイラオプションに`jsxFactory`が指定されており、React JSXのコンパイルを目的とする場合に使用されるJSXフラグメントファクトリ関数(例: `Fragment`)を指定します。 - -例えば、次のTSConfigでは: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment" - } -} -``` - -このTSXファイルは: - -```tsx -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` - -次のようになります: - -```tsx twoslash -// @showEmit -// @showEmittedFile: index.js -// @jsxFactory: h -// @jsxFragmentFactory: Fragment -// @noErrors -// @target: esnext -// @module: commonjs - -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` - -このオプションは[Babelの`/* @jsxFrag h */`ディレクティブ](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#fragments)とよく似ており、ファイル単位で使用できます。 - -例: - -```tsx twoslash -/** @jsx h */ -/** @jsxFrag Fragment */ - -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/jsxImportSource.md b/packages/tsconfig-reference/copy/ja/options/jsxImportSource.md deleted file mode 100644 index c94b8dad764c..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/jsxImportSource.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -display: "jsxImportSource" -oneline: "The module specifier for importing the jsx factory functions" ---- - -TypeScript 4.1で導入された`"react-jsx"`や`"react-jsxdev"`を[`jsx`](#jsx)に指定する際に`jsx`と`jsxs`のファクトリ関数をインポートするモジュール指定子を宣言します。 - -[React 17](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html)では、それぞれのインポートによる新しいJSXの変換がサポートされています。 - -例えば、このコードで: - -```tsx -import React from "react"; - -function App() { - return

Hello World

; -} -``` - -次のようなTSConfigの場合: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react-jsx" - } -} -``` - -TypeScriptからコンパイルされるJavaScriptは次のようになります: - -```tsx twoslash -// @showEmit -// @noErrors -// @jsx: react-jsx -// @module: commonjs -// @target: esnext -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -import React from "react"; - -function App() { - return

Hello World

; -} -``` - -`"jsxImportSource": "preact"`を使用する場合、tsconfigは次のようになり: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react-jsx", - "jsxImportSource": "preact", - "types": ["preact"] - } -} -``` - -以下のようなコードが生成されます: - -```tsx twoslash -// @showEmit -// @jsxImportSource: preact -// @types: preact -// @jsx: react-jsx -// @target: esnext -// @module: commonjs -// @noErrors - -export function App() { - return

Hello World

; -} -``` - -あるいは、ファイル単位のディレクティブを使ってこのオプションを設定することもできます。例えば: - -```tsx -/** @jsxImportSource preact */ - -export function App() { - return

Hello World

; -} -``` - -これにより、`_jsx`ファクトリをインポートする`preact/jsx-runtime`が追加されます。 - -_注意:_ このオプションを期待通りに動作させるには、`tsx`ファイルに`export`または`import`を含める必要があります。これにより、ファイルはモジュールとみなされます。 diff --git a/packages/tsconfig-reference/copy/ja/options/keyofStringsOnly.md b/packages/tsconfig-reference/copy/ja/options/keyofStringsOnly.md deleted file mode 100644 index e4481a75d2c5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/keyofStringsOnly.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Keyof Strings Only" -oneline: "Make keyof only return strings instead of string or numbers" ---- - -このフラグは、 文字列インデックス記法の型として適用される際に`keyof`型パラメータが`string | number`ではなく`string`を返すようにします。 - -このフラグは、[TypeScript 2.9のリリースよりも前](/docs/handbook/release-notes/typescript-2-9.html#support-number-and-symbol-named-properties-with-keyof-and-mapped-types)の挙動に保ちたいときに利用されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/lib.md b/packages/tsconfig-reference/copy/ja/options/lib.md deleted file mode 100644 index 98d9aee9e79b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/lib.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Lib" -oneline: "Include type definitions you know are available in your JavaScript runtime" ---- - -TypeScriptには組み込みのJS API(例:`Math`)の型定義や、ブラウザーで利用されるAPI(例:`document`)の型定義がデフォルトで組み込まれています。 -指定した`target`に合致する新しいJS機能のAPIの型定義もTypeScriptには組み込まれています。例えば、`Map`の定義は`target`が`ES6`かそれよりも新しいときに利用可能です。 - -いくつかの理由により、これらを変更したい場合があります: - -- プログラムはブラウザーで動作させる必要がないため、`"dom"`の型定義が不要である -- 利用している実行環境では特定のJavaScript APIを提供しているが(Polyfillを利用しているかもしれません)、指定されたECMAScriptのすべての構文をサポートしているわけではない -- より上位のECMAScriptバージョンについて、すべてではなく、部分的なPolyfillや実装が利用可能である - -### High Level libraries - -| Name | 内容 | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ES5` | ES3とES5のすべての機能を利用するための型定義。 | -| `ES2015` | ES2015(ES6)で利用可能なAPI - `array.find`、`Promise`、`Proxy`、`Symbol`、`Map`、`Set`、`Reflect`など。 | -| `ES6` | "ES2015"のエイリアス | -| `ES2016` | ES2016で利用可能なAPI - `array.include`など。 | -| `ES7` | "ES2016"のエイリアス | -| `ES2017` | ES2017で利用可能なAPI - `Object.entries`、`Object.values`、`Atomics`、`SharedArrayBuffer`、`date.formatToParts`、typed arraysなど。 | -| `ES2018` | ES2018で利用可能なAPI - `async` iterables、`promise.finally`、`Intl.PluralRules`、`rexexp.groups`など。 | -| `ES2019` | ES2019で利用可能なAPI - `array.flat`、`array.flatMap`、`Object.fromEntries`、`string.trimStart`、`string.trimEnd`など。 | -| `ES2020` | ES2020で利用可能なAPI - `string.matchAll`など。 | -| `ESNext` | ESNextで利用可能なAPI - JavaScriptの仕様変遷によって内容は変化します。 | -| `DOM` | [DOM](https://developer.mozilla.org/docs/Glossary/DOM)の型定義 - `window`や`document`など。 | -| `WebWorker` | [WebWorker](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Using_web_workers)コンテキストで利用可能なAPI | -| `ScriptHost` | [Windows Script Hosting System](https://wikipedia.org/wiki/Windows_Script_Host)のAPI | - -### 個別のライブラリコンポーネント - -| Name | -| ------------------------- | -| `DOM.Iterable` | -| `ES2015.Core` | -| `ES2015.Collection` | -| `ES2015.Generator` | -| `ES2015.Iterable` | -| `ES2015.Promise` | -| `ES2015.Proxy` | -| `ES2015.Reflect` | -| `ES2015.Symbol` | -| `ES2015.Symbol.WellKnown` | -| `ES2016.Array.Include` | -| `ES2017.object` | -| `ES2017.Intl` | -| `ES2017.SharedMemory` | -| `ES2017.String` | -| `ES2017.TypedArrays` | -| `ES2018.Intl` | -| `ES2018.Promise` | -| `ES2018.RegExp` | -| `ES2019.Array` | -| `ES2019.Full` | -| `ES2019.Object` | -| `ES2019.String` | -| `ES2019.Symbol` | -| `ES2020.Full` | -| `ES2020.String` | -| `ES2020.Symbol.wellknown` | -| `ESNext.AsyncIterable` | -| `ESNext.Array` | -| `ESNext.Intl` | -| `ESNext.Symbol` | - -もしこのリストが古くなっている場合は、完全なリストを[TypeScript source code](https://github.com/microsoft/TypeScript/tree/master/lib)で読むことができます。 diff --git a/packages/tsconfig-reference/copy/ja/options/listEmittedFiles.md b/packages/tsconfig-reference/copy/ja/options/listEmittedFiles.md deleted file mode 100644 index ec4be09204bb..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/listEmittedFiles.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -display: "List Emitted Files" -oneline: "Print the names of emitted files after a compile" ---- - -コンパイルされ、生成されたファイル名をターミナルに出力します。 - -このフラグは2つのケースで有用です: - -- 後続のコマンドでファイル名が処理されるターミナルのビルドチェーンの一部としてTypeScriptをトランスパイルしたいとき -- TypeScriptがコンパイルしてほしいファイルを対象に含めているか分からず、[対象ファイル設定](#Project_Files_0)を部分的にデバッグしたいとき - -例えば、以下のようなときに: - -``` -example -├── index.ts -├── package.json -└── tsconfig.json -``` - -以下の設定をすると: - -```json -{ - "compilerOptions": { - "declaration": true, - "listFiles": true - } -} -``` - -以下のようなpathを出力します: - -``` -$ npm run tsc - -path/to/example/index.js -path/to/example/index.d.ts -``` - -通常、成功するとTypeScriptは何も出力しない状態に戻ります。 diff --git a/packages/tsconfig-reference/copy/ja/options/listFiles.md b/packages/tsconfig-reference/copy/ja/options/listFiles.md deleted file mode 100644 index 8667668b5a78..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/listFiles.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -display: "List Files" -oneline: "Print all of the files read during the compilation" ---- - -コンパイルされるファイル名を出力します。これは、コンパイルしてほしいファイルを TypeScript が対象に含めてくれているかが分からないときに有用です。 - -例えば、以下のようなときに: - -``` -example -├── index.ts -├── package.json -└── tsconfig.json -``` - -以下の設定をすると: - -```json tsconfig -{ - "compilerOptions": { - "listFiles": true - } -} -``` - -出力される path は以下のようになります: - -``` -$ npm run tsc -path/to/example/node_modules/typescript/lib/lib.d.ts -path/to/example/node_modules/typescript/lib/lib.es5.d.ts -path/to/example/node_modules/typescript/lib/lib.dom.d.ts -path/to/example/node_modules/typescript/lib/lib.webworker.importscripts.d.ts -path/to/example/node_modules/typescript/lib/lib.scripthost.d.ts -path/to/example/index.ts -``` diff --git a/packages/tsconfig-reference/copy/ja/options/locale.md b/packages/tsconfig-reference/copy/ja/options/locale.md deleted file mode 100644 index eb27df96ba00..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/locale.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Locale" -oneline: "Set the language of the tsc output" ---- - -TypeScriptは多くの言語をサポートしていますが、`tsconfig.json`には設定できません。 -ホストの環境設定もしくは`--locale ru`のように`--locale`CLIフラグからのみ利用できます。 - -### TypeScript 3.7がサポートしているロケール - -| 名前 | ロケール | -| --------------------- | -------- | -| ブラジルポルトガル語 | `pr-BR` | -| 中国語(簡体字) | `zh-TW` | -| 中国語(繁体字) | `zh-CN` | -| チェコ語 | `cs-CZ` | -| 英語(US) | `en-US` | -| フランス語 | `fr-FR` | -| ドイツ語 | `de-DE` | -| イタリア語 | `it-IT` | -| 日本語 | `ja-JP` | -| 韓国語 | `ko-KR` | -| ポーランド語 | `pl-PL` | -| ロシア語 | `ru-RU` | -| スペイン語 | `es-ES` | -| トルコ語 | `tr-TR` | diff --git a/packages/tsconfig-reference/copy/ja/options/mapRoot.md b/packages/tsconfig-reference/copy/ja/options/mapRoot.md deleted file mode 100644 index 43bfebe56a3d..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/mapRoot.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "Map Root" -oneline: "Set an external root for sourcemaps" ---- - -生成された場所情報を利用するのではなく、デバッガがマップファイルを探索すべき場所を明示します。 -この文字列はソースマップの中で、文字列そのままの値として処理されます。例えば: - -```json tsconfig -{ - "compilerOptions": { - "sourceMap": true, - "mapRoot": "https://my-website.com/debug/sourcemaps/" - } -} -``` - -この設定は、`index.js`は`https://my-website.com/debug/sourcemaps/index.js.map`にソースマップがあることを宣言しています。 diff --git a/packages/tsconfig-reference/copy/ja/options/maxNodeModuleJsDepth.md b/packages/tsconfig-reference/copy/ja/options/maxNodeModuleJsDepth.md deleted file mode 100644 index cb6c84f2f80b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/maxNodeModuleJsDepth.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Max Node Module JS Depth" -oneline: "How deep should TypeScript run type checking in node_modules" ---- - -`node_modules`配下で依存関係を探す際や、JavaScriptファイルをロードする際の最大の深さです。 - -このフラグは[`allowJs`](#allowJs)が有効化されているときのみ利用可能であり、`node_modules`内のすべてのJavaScriptについて、TypeScriptに型推論させたいときに用います。 - -理想的には、このオプションの値は0(デフォルト値)であるべきで、`d.ts`ファイルでモジュールを明示的に定義すべきです。 -ただし、速度と精度を犠牲にして、このオプションを有効化したいという場合もあるかもしれません。 diff --git a/packages/tsconfig-reference/copy/ja/options/module.md b/packages/tsconfig-reference/copy/ja/options/module.md deleted file mode 100644 index d8b8e0790b6e..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/module.md +++ /dev/null @@ -1,88 +0,0 @@ ---- -display: "Module" -oneline: "Sets the expected module system for your runtime" ---- - -より詳細については、ハンドブックのModulesの章を参照してください。おそらく`"CommonJS"`が求められるでしょう。 - -次のファイルに対する出力の例をいくつか示します: - -```ts twoslash -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `CommonJS` - -```ts twoslash -// @showEmit -// @module: commonjs -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `UMD` - -```ts twoslash -// @showEmit -// @module: umd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `AMD` - -```ts twoslash -// @showEmit -// @module: amd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `System` - -```ts twoslash -// @showEmit -// @module: system -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `ESNext` / `ES2020` - -```ts twoslash -// @showEmit -// @module: esnext -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/moduleResolution.md b/packages/tsconfig-reference/copy/ja/options/moduleResolution.md deleted file mode 100644 index 91d100f40294..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/moduleResolution.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Module Resolution" -oneline: "Allow TypeScript 1.6 module resolution strategies" ---- - -モジュール解決の方法を'node'(Node.js)または'classic'(TypeScript pre-1.6)から設定します。おそらく利用する必要はないでしょう。 diff --git a/packages/tsconfig-reference/copy/ja/options/newLine.md b/packages/tsconfig-reference/copy/ja/options/newLine.md deleted file mode 100644 index 554bc8960943..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/newLine.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "New Line" -oneline: "Set the newline character" ---- - -ファイルを出力するときの改行コードを指定します: 'CRLF'(dos)または'LF'(unix)のいずれかを指定してください。 diff --git a/packages/tsconfig-reference/copy/ja/options/noEmit.md b/packages/tsconfig-reference/copy/ja/options/noEmit.md deleted file mode 100644 index d4bf73021e36..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noEmit.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "No Emit" -oneline: "Do not emit files from a compilation" ---- - -JavaScriptソースコード、ソースマップ、型定義のファイルを出力しないようにします。 - -これにより、[Babel](https://babeljs.io)や[swc](https://github.com/swc-project/swc)などのTypeScriptファイルをJavaScript環境内で実行可能なファイルへ変換するための別のツールを追加できます。 - -TypeScriptをエディター統合やソースコードの型チェックツールとして利用できるようになります。 diff --git a/packages/tsconfig-reference/copy/ja/options/noEmitHelpers.md b/packages/tsconfig-reference/copy/ja/options/noEmitHelpers.md deleted file mode 100644 index 35e55723287a..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noEmitHelpers.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -display: "No Emit Helpers" -oneline: "Assume helpers are available in the global runtime" ---- - -[`importHelpers`](#importHelpers)を使って、ヘルパ関数をインポートする代わりに、グローバルスコープに使用するヘルパ関数のための実装を提供し、ヘルパ関数が出力されるのを完全に無効にできます。 - -例えば、この`async`関数をES5で実行するためには、`await`のような関数と`generator`のような関数が必要です: - -```ts twoslash -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` - -これは、とても多くのJavaScriptを生成します: - -```ts twoslash -// @showEmit -// @target: ES5 -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` - -このフラグを通じて、独自のグローバル実装に切り替えられます: - -```ts twoslash -// @showEmit -// @target: ES5 -// @noEmitHelpers -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noEmitOnError.md b/packages/tsconfig-reference/copy/ja/options/noEmitOnError.md deleted file mode 100644 index 3dfb97e9e12c..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noEmitOnError.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "No Emit On Error" -oneline: "Only emit files on a successful compile" ---- - -エラーがあるときに、JavaScriptソースコードやソースマップファイル、型定義ファイルなどをコンパイラに出力させないようにします。 - -デフォルト値は`false`であり、このため、すべてのエラーを解決するよりも前に別の環境でコードの変更結果を確認したいといったファイル監視環境において、TypeScriptが扱いやすくなっています。 diff --git a/packages/tsconfig-reference/copy/ja/options/noErrorTruncation.md b/packages/tsconfig-reference/copy/ja/options/noErrorTruncation.md deleted file mode 100644 index b5d35181e8d5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noErrorTruncation.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "No Error Truncation" -oneline: "Do not truncate error messages" ---- - -エラーメッセージを切り捨てないようにします。 - -デフォルト値の`false`の場合、次のようになります。 - -```ts twoslash -// @errors: 2322 2454 -// @noErrorTruncation: false -var x: { - propertyWithAnExceedinglyLongName1: string; - propertyWithAnExceedinglyLongName2: string; - propertyWithAnExceedinglyLongName3: string; - propertyWithAnExceedinglyLongName4: string; - propertyWithAnExceedinglyLongName5: string; -}; - -// 型'x'の文字列表現はエラメッセージ中で省略されます -var s: string = x; -``` - -`true`にすると、次のようになります。 - -```ts twoslash -// @errors: 2322 2454 -// @noErrorTruncation: true -var x: { - propertyWithAnExceedinglyLongName1: string; - propertyWithAnExceedinglyLongName2: string; - propertyWithAnExceedinglyLongName3: string; - propertyWithAnExceedinglyLongName4: string; - propertyWithAnExceedinglyLongName5: string; -}; - -// 型'x'の文字列表現はエラメッセージ中で省略されます -var s: string = x; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noFallthroughCasesInSwitch.md b/packages/tsconfig-reference/copy/ja/options/noFallthroughCasesInSwitch.md deleted file mode 100644 index 88459fd99584..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noFallthroughCasesInSwitch.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -display: "No Fallthrough Cases In Switch" -oneline: "Report errors for fallthrough cases in switch statements." ---- - -switch文において、次のcaseへ処理を持ち越した場合にエラーを報告します。 -switch文内の空でないcase句が`break`または`return`を含むことを確約します。 -これは、意図しないcaseへの処理持ち越しによるバグを流出させない、ということ意味しています。 - -```ts twoslash -// @noFallthroughCasesInSwitch -// @errors: 7029 -const a: number = 6; - -switch (a) { - case 0: - console.log("even"); - case 1: - console.log("odd"); - break; -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noImplicitAny.md b/packages/tsconfig-reference/copy/ja/options/noImplicitAny.md deleted file mode 100644 index f0943a399a5b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "No Implicit Any" -oneline: "Avoid introducing anys inside your codebase when a type could be specified" ---- - -いくつかの型アノテーションが存在しないケースにおいて、TypeScriptは変数の型が推論できないときに、`any`型へフォールバックします。 - -このため、エラーを見逃す可能性があります。例えば: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // エラーにならない? - console.log(s.subtr(3)); -} -fn(42); -``` - -ただし、`noImplicitAny`を有効化すると、TypeScriptは型が`any`に推論されるときは常にエラーを発生させます: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noImplicitReturns.md b/packages/tsconfig-reference/copy/ja/options/noImplicitReturns.md deleted file mode 100644 index 8180aa660b45..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noImplicitReturns.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "No Implicit Returns" -oneline: "Ensure that all codepaths return in a function" ---- - -有効化すると、TypeScriptは関数内のすべてのコードパスについて、値を返却していることをチェックします。 - -```ts twoslash -// @errors: 2366 2322 -function lookupHeadphonesManufacturer(color: "blue" | "black"): string { - if (color === "blue") { - return "beats"; - } else { - "bose"; - } -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noImplicitThis.md b/packages/tsconfig-reference/copy/ja/options/noImplicitThis.md deleted file mode 100644 index e8841463bec7..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noImplicitThis.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -display: "No Implicit This" -oneline: "Raise errors when 'this' would be any" ---- - -暗黙的に`any`型となるthis式でエラーを発生させます。 - -例えば、以下のClassは`this.width`と`this.height`にアクセスする関数を返しています。 -しかし、`getAreaFunction`の内側の関数内でのコンテキストにおける`this`はRectangleのインスタンスではありません。 - -```ts twoslash -// @errors: 2683 -class Rectangle { - width: number; - height: number; - - constructor(width: number, height: number) { - this.width = width; - this.height = height; - } - - getAreaFunction() { - return function() { - return this.width * this.height; - }; - } -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noImplicitUseStrict.md b/packages/tsconfig-reference/copy/ja/options/noImplicitUseStrict.md deleted file mode 100644 index 6a040472866a..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noImplicitUseStrict.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -display: "No Implicit Use Strict" -oneline: "Disable 'use strict' in the JS emit" ---- - -これは必要ないはずです。ES6でないターゲットでモジュールを出力する際に、TypeScriptはデフォルトで`"use strict;"`という前置きをファイルの一番始めに出力します。 -この設定は、この前置きを無効にします。 - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -// @noImplicitUseStrict -// @alwaysStrict: false -export function fn() {} -``` - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -export function fn() {} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noLib.md b/packages/tsconfig-reference/copy/ja/options/noLib.md deleted file mode 100644 index a5c3ea2f1b60..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noLib.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "No Lib" -oneline: "Ignore options from lib" ---- - -すべてのライブラリファイルについて、自動でのインクルードを無効化します。 -このオプションを設定した場合、`lib`は無視されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/noResolve.md b/packages/tsconfig-reference/copy/ja/options/noResolve.md deleted file mode 100644 index 8ba0aa5a40b1..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noResolve.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "No Resolve" -oneline: "Skip ahead-of-time checking for import and (x: T, y: U) => [T, U]; -type B = (x: S, y: S) => [S, S]; - -function f(a: A, b: B) { - b = a; // Ok - a = b; // Error -} -``` - -このフラグを利用することで、このチェックを無効化できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/noUncheckedIndexedAccess.md b/packages/tsconfig-reference/copy/ja/options/noUncheckedIndexedAccess.md deleted file mode 100644 index fbb2f028f01d..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noUncheckedIndexedAccess.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -display: "noUncheckedIndexedAccess" -oneline: "Add undefined to a type when accessed using an index" ---- - -TypeScriptには、オブジェクトにおいて未知のキーを持ちながらも値が既知であるプロパティをインデックスシグネチャで記述する方法があります。 - -```ts twoslash -interface EnvironmentVars { - NAME: string; - OS: string; - - // 未知のプロパティは、次のようなインデックスシグネチャで扱うことができます。 - [propName: string]: string; -} - -declare const env: EnvironmentVars; - -// 既存のプロパティとして宣言されています -const sysName = env.NAME; -const os = env.OS; -// ^? - -// 宣言されていませんが、インデックス -// シグネチャのおかげで、stringとして扱われます -const nodeEnv = env.NODE_ENV; -// ^? -``` - -`noUncheckedIndexedAccess`をオンにすると、型の未定義のフィールドに`undefined`が追加されます。 - -```ts twoslash -interface EnvironmentVars { - NAME: string; - OS: string; - - // 未知のプロパティは、次のようなインデックスシグネチャで扱うことができます。 - [propName: string]: string; -} -// @noUncheckedIndexedAccess -// ---cut--- -declare const env: EnvironmentVars; - -// 既存のプロパティとして宣言されています -const sysName = env.NAME; -const os = env.OS; -// ^? - -// 宣言されていませんが、インデックス -// シグネチャのおかげで、stringとして扱われます -const nodeEnv = env.NODE_ENV; -// ^? -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noUnusedLocals.md b/packages/tsconfig-reference/copy/ja/options/noUnusedLocals.md deleted file mode 100644 index a03af770807f..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noUnusedLocals.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "No Unused Locals" -oneline: "Error when a local variable isn't read" ---- - -利用されていないローカル変数について、エラーを報告します。 - -```ts twoslash -// @noUnusedLocals -// @errors: 6133 -const createKeyboard = (modelID: number) => { - const defaultModelID = 23; - return { type: "keyboard", modelID }; -}; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/noUnusedParameters.md b/packages/tsconfig-reference/copy/ja/options/noUnusedParameters.md deleted file mode 100644 index 81ffdb720378..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/noUnusedParameters.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "No Unused Parameters" -oneline: "Error when a parameter isn't used" ---- - -利用されていない関数のパラメータについて、エラーを報告します。 - -```ts twoslash -// @noUnusedParameters -// @errors: 6133 -const createDefaultKeyboard = (modelID: number) => { - const defaultModelID = 23; - return { type: "keyboard", modelID: defaultModelID }; -}; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/out.md b/packages/tsconfig-reference/copy/ja/options/out.md deleted file mode 100644 index 82a21f612ef0..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/out.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Out" -oneline: "Do not use this" ---- - -代わりに[outFile](#outfile)を使ってください。 - -`out`オプションは、予測可能でない、または一貫性のない方法によってファイルの最終的な場所を計算してしまいます。 -このオプションは後方互換性の維持のためにのみ残されていますが、非推奨です。 diff --git a/packages/tsconfig-reference/copy/ja/options/outDir.md b/packages/tsconfig-reference/copy/ja/options/outDir.md deleted file mode 100644 index 0b8cf6bb8f2f..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/outDir.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Out Dir" -oneline: "Set an output folder for all emitted files" ---- - -設定すると、`.js`ファイル(`.d.ts`や`.js.map`ファイルも同様)がこのディレクトリ内に出力されます。 -元のソースファイルのディレクトリ構造は保存されます。結果のルート構造が意図どおりでない場合は、[rootDir](#rootDir)を参照してください。 - -設定しない場合、`.js`ファイルは`.ts`ファイルを作成したのと同じディレクトリに出力されます。 - -```sh -$ tsc - -example -├── index.js -└── index.ts -``` - -次のような`tsconfig.json`の場合: - -```json -{ - "compilerOptions": { - "outDir": "dist" - } -} -``` - -この設定で`tsc`を実行すると、ファイルは指定された`dist`フォルダに生成されます。 - -```sh -$ tsc - -example -├── dist -│ └── index.js -├── index.ts -└── tsconfig.json -``` diff --git a/packages/tsconfig-reference/copy/ja/options/outFile.md b/packages/tsconfig-reference/copy/ja/options/outFile.md deleted file mode 100644 index 44326e87592e..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/outFile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Out File" -oneline: "Output a single file of all JS files concatenated" ---- - -設定すると、すべての_グローバルな_(モジュールでない)ファイルは指定した単一の出力ファイルに結合されます。 - -もし`module`が`system`か`amd`の場合、この単一出力ファイルのグローバルなコンテンツの後ろにすべてのモジュールファイルも結合されます。 - -Note: `module`が`None`、`System`、`AMD`のいずれかでない限り、`outFile`は使用できません。 -このオプションはCommonJSまたはES6 Modulesにバンドルする目的では使用_できません_。 diff --git a/packages/tsconfig-reference/copy/ja/options/paths.md b/packages/tsconfig-reference/copy/ja/options/paths.md deleted file mode 100644 index 06e685cf281b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/paths.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Paths" -oneline: "A set of locations to look for imports in" ---- - -`baseUrl`からの相対的な検索場所にインポートを再マッピングするエントリです。`paths`についてより網羅的な記述は[ハンドブック](/docs/handbook/module-resolution.html#path-mapping)に記載されています。 - -`paths`により、TypeScript がどのように`require`/`import`からインポートを解決すべきかを定義できます。 - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": ".", // "paths"を設定する場合、このオプションも設定が必要です。 - "paths": { - "jquery": ["node_modules/jquery/dist/jquery"] // このマッピングは"baseUrl"からの相対パスです。 - } - } -} -``` - -この設定は、`import "jquery"`と記述できるようにし、すべての正しい型がローカルから取得されるようになります。 - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": "src", - "paths": { - "app/*": ["app/*"], - "config/*": ["app/_config/*"], - "environment/*": ["environments/*"], - "shared/*": ["app/_shared/*"], - "helpers/*": ["helpers/*"], - "tests/*": ["tests/*"] - }, -} -``` - -この例は、TypeScript に対して、ファイルリゾルバーへコードを見つけるためのカスタムプレフィクスによる補助をさせています。 -このパターンは、コードベース内で長い相対パスを避けるために利用できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/plugins.md b/packages/tsconfig-reference/copy/ja/options/plugins.md deleted file mode 100644 index df5b21b03a3a..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/plugins.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Plugins" -oneline: "A list of language service plugins to include" ---- - -エディタ内部で動作させるLanguage Serviceのプラグインを列挙します。 - -Language Serviceプラグインを用いることで、ユーザーはTypeScriptファイルから追加情報を受け取ることができます。プラグインは、TypeScriptとエディタ間でやりとりされているメッセージを拡張したり、プラグイン独自エラーメッセージを提供できます。 - -例: - -- [ts-sql-plugin](https://github.com/xialvjun/ts-sql-plugin#readme) — テンプレート文字列によるSQLビルダについて、SQLの構文チェックを追加します。 -- [typescript-styled-plugin](https://github.com/Microsoft/typescript-styled-plugin) — テンプレート文字列内部のCSSを構文チェック機能を提供します。 -- [typescript-eslint-language-service](https://github.com/Quramy/typescript-eslint-language-service) — eslintのエラーメッセージを出力や、出力されたエラーメッセージの修正機能を提供します。 -- [ts-graphql-plugin](https://github.com/Quramy/ts-graphql-plugin) — テンプレート文字列内部のGraphQLクエリについて、バリデーションと自動補完機能を提供します。 - -VS Codeには、拡張のための[Lnguage Serviceプラグインの自動読込 ](https://code.visualstudio.com/api/references/contribution-points#contributes.typescriptServerPlugins)機能があるため、`tsconfig.json`にプラグインの定義を書かずにエディタ上でプラグインを動作させることもできます。 diff --git a/packages/tsconfig-reference/copy/ja/options/preserveConstEnums.md b/packages/tsconfig-reference/copy/ja/options/preserveConstEnums.md deleted file mode 100644 index 791ec1b6a375..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/preserveConstEnums.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -display: "Preserve Const Enums" -oneline: "Do not erase `const enum` declarations in generated code" ---- - -コード生成時に`const enum`の定義を取り除かないようにします。 -`const enum`は、参照ではなくEnum値を出力することによって、アプリケーション実行時の全体的なメモリの使用量を軽減します。 - -例えば次のTypeScriptでは: - -```ts twoslash -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const selectedAlbum = Album.JimmyEatWorldFutures; -if (selectedAlbum === Album.JimmyEatWorldFutures) { - console.log("That is a great choice."); -} -``` - -デフォルトの`const enum`の挙動は、すべての`Album.Something`を対応する数値リテラル値に変換し、 -JavaScriptコードから完全に元のEnumへの参照を除去します。 - -```ts twoslash -// @showEmit -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const selectedAlbum = Album.JimmyEatWorldFutures; -if (selectedAlbum === Album.JimmyEatWorldFutures) { - console.log("That is a great choice."); -} -``` - -`preserveConstEnums`を`true`に設定すると、`enum`は実行時に残り、数値も出力されるようになります。 - -```ts twoslash -// @preserveConstEnums: true -// @showEmit -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const selectedAlbum = Album.JimmyEatWorldFutures; -if (selectedAlbum === Album.JimmyEatWorldFutures) { - console.log("That is a great choice."); -} -``` - -このオプションによって、このような`const enums`は実行時に追跡されないソースコードのみの機能になります。 diff --git a/packages/tsconfig-reference/copy/ja/options/preserveSymlinks.md b/packages/tsconfig-reference/copy/ja/options/preserveSymlinks.md deleted file mode 100644 index a376b0926a6e..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/preserveSymlinks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Preserve Symlinks" -oneline: "Do not resolve symlink paths" ---- - -シンボリックリンクを実体パスへ解決しないというNode.jsの同名フラグを反映したオプションです。 - -このフラグはWebpackの`resolve.symlinks`オプションと逆の動作をします(つまり、TypeScriptの`preserveSymlinks`をtrueに設定することは、Webpackの`resolve.symlinks`をfalseに設定することと同等です。逆も然りです)。 - -このオプションを有効化すると、モジュールとパッケージへの参照(例えば、`import`や`/// ` ディレクティブ)は、シンボリックリンクが解決する場所としてではなく、そのシンボリックリンクファイルからの相対パスとして解決されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/preserveWatchOutput.md b/packages/tsconfig-reference/copy/ja/options/preserveWatchOutput.md deleted file mode 100644 index d048497f6965..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/preserveWatchOutput.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Preserve Watch Output" -oneline: "Do not wipe the console in watch mode" ---- - -watchモードについて、変更が発生するたびにスクリーンをクリアせずに以前の出力をコンソールに出し続けるかどうかを設定します。 diff --git a/packages/tsconfig-reference/copy/ja/options/pretty.md b/packages/tsconfig-reference/copy/ja/options/pretty.md deleted file mode 100644 index 1d29339052fa..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/pretty.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Pretty" -oneline: "Use color and formatting to make compiler errors easier to read" ---- - -エラーやメッセージを文脈や色を使ってスタイリングします。このオプションはデフォルトで有効です— -コンパイラから簡潔で単色のメッセージを受け取れるようにすることもできます。 diff --git a/packages/tsconfig-reference/copy/ja/options/reactNamespace.md b/packages/tsconfig-reference/copy/ja/options/reactNamespace.md deleted file mode 100644 index 0eb46741ec06..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/reactNamespace.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "React Namespace" -oneline: "Specify the object which 'createElement' is called on in JSX" ---- - -代わりに[`--jsxFactory`](#jsxFactory)を利用してください。`react`のときにTSXファイルの`createElement`が実行されるオブジェクトを指定します。 diff --git a/packages/tsconfig-reference/copy/ja/options/references.md b/packages/tsconfig-reference/copy/ja/options/references.md deleted file mode 100644 index 1990184e0d1d..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/references.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "References" -oneline: "Provide a structure for composite projects" ---- - -プロジェクト参照はTypeScriptのプログラムを小さい断片に分けて構造化するための手法です。 -プロジェクト参照を用いると、ビルド時間やエディターとのインタラクションに必要な時間が大幅に改善され、コンポーネント間の論理分割が強制により、より洗練された方法でコードを整理できます。 - -プロジェクト参照がどのように動作するかについては、このハンドブックの[Project References](/docs/handbook/project-references.html)を読んでください。 diff --git a/packages/tsconfig-reference/copy/ja/options/removeComments.md b/packages/tsconfig-reference/copy/ja/options/removeComments.md deleted file mode 100644 index 35ffa80bf083..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/removeComments.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -display: "Remove Comments" -oneline: "Remove comments in TypeScript from appearing in JavaScript" ---- - -TypeScriptファイルをJavaScriptへ変換するときに、すべてのコメントを除去します。デフォルト値は`false`です。 - -例えば、次のJSDocコメントを持つTypeScriptファイルに対して: - -```ts -/** ポルトガル語に翻訳された'Hello world' */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -`removeComments`が`true`であるとき、次のようになります: - -```ts twoslash -// @showEmit -// @removeComments: true -/** ポルトガル語に翻訳された'Hello world' */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -`removeComments`が設定されていない・または`false`であるときは次のようになります: - -```ts twoslash -// @showEmit -// @removeComments: false -/** ポルトガル語に翻訳された'Hello world' */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -つまり、コメントはJavaScriptコードに表示されるようになります。 diff --git a/packages/tsconfig-reference/copy/ja/options/resolveJsonModule.md b/packages/tsconfig-reference/copy/ja/options/resolveJsonModule.md deleted file mode 100644 index a9fe64b2e0dc..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/resolveJsonModule.md +++ /dev/null @@ -1,44 +0,0 @@ ---- -display: "Resolve JSON Module" -oneline: "Allow importing .json files" ---- - -'.json'拡張子のファイルをモジュールとしてインポートできるようにします。Node のプロジェクトで一般的に利用されている手法です。 -このオプションは、`import`時に静的な JSON の構造から型を生成します。 - -デフォルトでは、TypeScript は JSON ファイルの解決をサポートしていません: - -```ts twoslash -// @errors: 2732 -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` - -このオプションを有効にすると JSON のインポートが可能となり、JSON ファイルの型を検査できるようになります。 - -```ts twoslash -// @errors: 2367 -// @resolveJsonModule -// @module: commonjs -// @moduleResolution: node -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/rootDir.md b/packages/tsconfig-reference/copy/ja/options/rootDir.md deleted file mode 100644 index 7e3d43f53d5c..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/rootDir.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -display: "Root Dir" -oneline: "Sets the root folder within your source files" ---- - -**デフォルト値**: 型定義ファイルでないすべての入力ファイルの中での最長の共通パス。`composite`が設定されている場合、この値の代わりに`tsconfig.json`を含むディレクトリがデフォルトとなります。 - -TypeScriptはファイルをコンパイルするとき、入力ディレクトリ内のディレクトリ構造が同じになるように出力ディレクト内の構造を保ちます。 - -例えば、いくつかの入力ファイルがあったとしましょう: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -├── types.d.ts -``` - -推定される`rootDir`の値は、型定義ファイルでないすべての入力ファイルの中での最長の共通パス、この例では`core/`となります。 - -`outDir`が`dist`だったとすると、TypeScriptは次のツリー構造を出力します: - -``` -MyProj -├── dist -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -``` - -ただし、出力ディレクトリ内に`core`を含めることを意図している場合があります。 -`rootDir: "."`を`tsconfig.json`に設定すると、TypeScriptは次のツリー構造を出力します: - -``` -MyProj -├── dist -│ ├── core -│ │ ├── a.js -│ │ ├── b.js -│ │ ├── sub -│ │ │ ├── c.js -``` - -重要なこととして、`rootDir`は**どのファイルがコンパイルに含められるかに影響しません**。 -`tsconfig.json`の`include`、`exclude`や`files`設定との相互作用はありません。 - -TypeScriptは`outDir`以外のディレクトリに出力ファイルを書き込むことはなく、ファイルの入力をスキップすることもありません。 -このため、`rootDir`は出力する必要があるすべてのファイルがrootDirパスの下にあることを強制します。 - -例えば、次のツリー構造があったとしましょう: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -├── helpers.ts -``` - -`rootDir`を`core`に、`include`を`*`に設定すると、`outDir`の_外部_(i.e. `../helpers.ts`)に出力する必要のあるファイル(`helpers.ts`)が生まれるため、エラーとなります。 diff --git a/packages/tsconfig-reference/copy/ja/options/rootDirs.md b/packages/tsconfig-reference/copy/ja/options/rootDirs.md deleted file mode 100644 index 44d37b88d348..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/rootDirs.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -display: "Root Dirs" -oneline: "Set multiple root directories" ---- - -`rootDirs`を用いると、単一のルートとして振る舞う「仮想的な」ディレクトリが複数存在することをコンパイラへ伝えることができます。 - -「仮想的な」ディレクトリは 1 つにまとめられるとしても、この設定によって、コンパイラはこれらのディレクトリ内での相対パスによるモジュールのインポートを解決できるようになります。 - -例えば: - -``` - src - └── views - └── view1.ts (can import "./template1", "./view2`) - └── view2.ts (can import "./template1", "./view1`) - - generated - └── templates - └── views - └── template1.ts (can import "./view1", "./view2") -``` - -```json tsconfig -{ - "compilerOptions": { - "rootDirs": ["src/views", "generated/templates/views"] - } -} -``` - -この設定は TypeScript がどのように JavaScript を出力するかには影響しません。 -実行時に相対パスを使って動作可能であるという仮定がエミュレートされるだけです。 diff --git a/packages/tsconfig-reference/copy/ja/options/skipDefaultLibCheck.md b/packages/tsconfig-reference/copy/ja/options/skipDefaultLibCheck.md deleted file mode 100644 index 288999ed55d5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/skipDefaultLibCheck.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Skip Default Lib Check" -oneline: "use SkipLibCheck instead" ---- - -代わりに[`--skipLibCheck`](#skipLibCheck)を利用してください。デフォルトのライブラリ型定義ファイルをチェックしないようになります。 diff --git a/packages/tsconfig-reference/copy/ja/options/skipLibCheck.md b/packages/tsconfig-reference/copy/ja/options/skipLibCheck.md deleted file mode 100644 index 3e3cd217c74b..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/skipLibCheck.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Skip Lib Check" -oneline: "Skip type checking of declaration files" ---- - -型定義ファイルのチェックをスキップします。 - -型システムの精度を犠牲にすることで、コンパイル実行時間を削減します。 -例えば、2つのライブラリが、同じ`type`を一貫性の無い方法で定義していたとします。 -すべての`d.ts`ファイルの完全なチェックを行わずに、TypeScriptはアプリケーション内のソースコードで明示的に参照しているコードの型をチェックします。 - -`skipLibCheck`の利用を検討する一般的なケースは、あるライブラリの型定義が`node_modules`内にコピーされて複数存在している場合です。 -このようなケースでは、 -[yarn's resolutions](https://yarnpkg.com/lang/en/docs/selective-version-resolutions/)のような機能の利用を検討してツリーにおける該当の依存関係のコピーが1つだけであることを確認するか、 -追加のツールを使わずに問題を修正するために依存関係の解決を理解して、コピーが1つだけであることを確認する方法を調査する必要があります。 diff --git a/packages/tsconfig-reference/copy/ja/options/sourceMap.md b/packages/tsconfig-reference/copy/ja/options/sourceMap.md deleted file mode 100644 index 421b6ad0d5f5..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/sourceMap.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Source Map" -oneline: "Creates source map files for emitted JavaScript files" ---- - -[ソースマップファイル](https://developer.mozilla.org/docs/Tools/Debugger/How_to/Use_a_source_map)の生成を有効化します。 -これらのファイルにより、出力されたJavaScriptファイルが実際に動作させるときに、デバッガーやその他のツールが元のTypeScriptソースファイルを表示できるようになります。 -ソースマップファイルは`.js.map`(または`.jsx.map`)として、対応する`.js`ファイルとともに出力されます。 - -次の例のように、`.js`ファイルには、外部ツールにソースマップファイルがどこにあるかを示すためのソースマップコメントが含まれるようになります: - -```ts -// helloWorld.ts -export declare const helloWorld = "hi"; -``` - -`sourceMap`を`true`に設定してコンパイルすると、次のJavaScriptファイルが生成されます: - -```js -// helloWorld.js -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.helloWorld = "hi"; -//# sourceMappingURL=// helloWorld.js.map -``` - -この設定は次のようなjson形式のマップファイルも生成します: - -```json -// helloWorld.js.map -{ - "version": 3, - "file": "ex.js", - "sourceRoot": "", - "sources": ["../ex.ts"], - "names": [], - "mappings": ";;AAAa,QAAA,UAAU,GAAG,IAAI,CAAA" -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/sourceRoot.md b/packages/tsconfig-reference/copy/ja/options/sourceRoot.md deleted file mode 100644 index 6f04368fd95a..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/sourceRoot.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "Source Root" -oneline: "Sets the root path for debuggers to find the reference source code" ---- - -相対的なソースコードの場所の代わりに、デバッガがTypeScriptのファイルを探索すべき場所を明示します。 -この文字列は、パスやURLを使用できるソースマップの中で、文字列そのままの値として処理されます: - -```json -{ - "compilerOptions": { - "sourceMap": true, - "sourceRoot": "https://my-website.com/debug/source/" - } -} -``` - -上記の設定は、`index.js`は`https://my-website.com/debug/source/index.ts`にソースコードがある、ということを宣言しています。 diff --git a/packages/tsconfig-reference/copy/ja/options/strict.md b/packages/tsconfig-reference/copy/ja/options/strict.md deleted file mode 100644 index d2306c130739..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/strict.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Strict" -oneline: "Enable TypeScript's most in-depth type checking rules" ---- - -`strict`フラグは、プログラムの正しさを強く保証するための幅広い型チェックの挙動を有効化します。 -このオプションの有効化は、以降で述べるすべての_strictモードファミリー_オプションの有効化と等価です。 -必要に応じて、個別のstrictモードファミリーを無効化できます。 - -今後のTypeScriptのバージョンがこのフラグの配下により厳密なチェックを導入するかもしれません。この場合、TypeScriptのアップグレードにより、プログラムに新しい種類のエラーが発見されることもあるでしょう。 -適切かつ可能な場合、この挙動を無効化するための対応するフラグも追加されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/strictBindCallApply.md b/packages/tsconfig-reference/copy/ja/options/strictBindCallApply.md deleted file mode 100644 index 4e5b2c288eb6..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/strictBindCallApply.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -display: "Strict Bind Call Apply" -oneline: "Ensure that 'call', 'bind' and 'apply' have the right arguments" ---- - -設定されている場合、関数の組み込みメソッドの`call`と`bind`と`apply`について、元となっている関数に対して正しい引数で呼び出されているかをTypeScriptがチェックします: - -```ts twoslash -// @strictBindCallApply: true -// @errors: 2345 - -// strictBindCallApplyが有効な場合 -function fn(x: string) { - return parseInt(x); -} - -const n1 = fn.call(undefined, "10"); - -const n2 = fn.call(undefined, false); -``` - -設定されていない場合、これらの関数は任意の引数を受け取って`any`を返します: - -```ts twoslash -// @strictBindCallApply: false - -// strictBindCallApplyが無効な場合 -function fn(x: string) { - return parseInt(x); -} - -// Note: エラーになりません。戻り値の型は'any'です。 -const n = fn.call(undefined, false); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/strictFunctionTypes.md b/packages/tsconfig-reference/copy/ja/options/strictFunctionTypes.md deleted file mode 100644 index 78d5a3c7e7d0..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/strictFunctionTypes.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -display: "Strict Function Types" -oneline: "Ensure that function parameters are consistent" ---- - -有効化すると、このフラグは関数のパラメータをより正しくチェックするようになります。 - -次は`strictFunctionTypes`が無効な場合の基本的な例です: - -```ts twoslash -// @strictFunctionTypes: false -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -type StringOrNumberFunc = (ns: string | number) => void; - -// 安全でない代入 -let func: StringOrNumberFunc = fn; -// 安全でない呼び出し - エラーとなります -func(10); -``` - -`strictFunctionTypes`を_有効化_すると、エラーが正しく検知されます: - -```ts twoslash -// @errors: 2322 -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -type StringOrNumberFunc = (ns: string | number) => void; - -// 安全でない代入は抑止されます -let func: StringOrNumberFunc = fn; -``` - -私達はこの機能を開発する際、本質的に安全でないClass階層を数多く見つけました。中にはDOMのものも含まれていました。 -このため、この設定は_function_構文で記述された関数にのみ適用され、_メソッド_として記述された関数には適用されません: - -```ts twoslash -type Methodish = { - func(x: string | number): void; -}; - -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -// 最終的に安全でない代入となりますが、エラー検知はされません -const m: Methodish = { - func: fn -}; -m.func(10); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/strictNullChecks.md b/packages/tsconfig-reference/copy/ja/options/strictNullChecks.md deleted file mode 100644 index 79751a0ad0a9..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/strictNullChecks.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -display: "Strict Null Checks" -oneline: "Ensure that nullability is respected in the type checker" ---- - -`strictNullChecks`が`false`のとき、`null`と`undefined`は言語により事実上無視されます。 -これは実行時の予期しないエラーの原因となります。 - -`strictNullChecks`が`true`のとき、`null`と`undefined`はそれ自身に明示的な型が与えられ、具体的な値を期待して利用しようとした場合にエラーとなります。 - -例えば、次のTypeScriptコードの`users.find`は実際にユーザーを見つけられる保証がありません。 -しかし、ユーザーを見つけられたかのようにコードを書くことができます: - -```ts twoslash -// @strictNullChecks: false -// @target: ES2015 -declare const loggedInUsername: string; - -const users = [ - { name: "Oby", age: 12 }, - { name: "Heera", age: 32 } -]; - -const loggedInUser = users.find(u => u.name === loggedInUsername); -console.log(loggedInUser.age); -``` - -`strictNullChecks`を`true`にすると、`loggedInUser`を利用する前に存在を確認していないことを示すエラーが発生します。 - -```ts twoslash -// @errors: 2339 2532 -// @target: ES2020 -// @strictNullChecks -declare const loggedInUsername: string; - -const users = [ - { name: "Oby", age: 12 }, - { name: "Heera", age: 32 } -]; - -const loggedInUser = users.find(u => u.name === loggedInUsername); -console.log(loggedInUser.age); -``` - -単純化してみると配列の`find`関数が次のようになっていることから、2つ目の例はエラーとなったのです: - - -```ts -// strictNullChecks: trueのとき -type Array = { - find(predicate: (value: any, index: number) => boolean): S | undefined; -}; - -// strictNullChecks: falseのとき、undefinedは型システムから取り除かれ、 -// 常に結果が見つかるかのようにコードを書けるようになります -type Array = { - find(predicate: (value: any, index: number) => boolean): S; -}; -``` diff --git a/packages/tsconfig-reference/copy/ja/options/strictPropertyInitialization.md b/packages/tsconfig-reference/copy/ja/options/strictPropertyInitialization.md deleted file mode 100644 index f39eb2042f05..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/strictPropertyInitialization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -display: "Strict Property Initialization" -oneline: "Ensure that all class properties match their types after the constructor has finished" ---- - -trueに設定した場合、Classプロパティが宣言されているがコンストラクターで値がセットされていないときに、TypeScriptはエラーを発生させます。 - -```ts twoslash -// @errors: 2564 -class UserAccount { - name: string; - accountType = "user"; - - email: string; - address: string | undefined; - - constructor(name: string) { - this.name = name; - // 注 this.emailがセットされていません - } -} -``` - -上記の場合: - -- `this.name`は具体的に設定されています。 -- `this.accountType`はデフォルト値が設定されています。 -- `this.email`は値が設定されていないため、エラーとなります。 -- `this.address`は`undefined`になりうる値として宣言されており、これは値の設定が必須でないことを意味しています。 diff --git a/packages/tsconfig-reference/copy/ja/options/stripInternal.md b/packages/tsconfig-reference/copy/ja/options/stripInternal.md deleted file mode 100644 index f99db5fdbb2e..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/stripInternal.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -display: "Strip Internal" -oneline: "Remove declarations which have '@internal' in their JSDoc comments" ---- - -JSDocコメントとして`@internal`が付与されたコードについて、定義情報を出力しないようにします。 -このオプションはコンパイラが内部で利用するためのものです; コンパイラは結果の妥当性検証をしないため、自己責任で使ってください。 -`d.ts`ファイル内での可視性を細かく制御できるツールを探しているのであれば、[api-extractor](https://api-extractor.com)を参照してください。 - -```ts twoslash -/** - * Days available in a week - * @internal - */ -export const daysInAWeek = 7; - -/** Calculate how much someone earns in a week */ -export function weeklySalary(dayRate: number) { - return daysInAWeek * dayRate; -} -``` - -このフラグが`false`であるとき(デフォルト): - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -/** - * 一週間の日数 - * @internal - */ -export const daysInAWeek = 7; - -/** 一週間あたりの稼ぎを計算する */ -export function weeklySalary(dayRate: number) { - return daysInAWeek * dayRate; -} -``` - -`stripInternal`を`true`に設定すると、`d.ts`は次のように編集されて出力されます。 - -```ts twoslash -// @stripinternal -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -/** - * 一週間の日数 - * @internal - */ -export const daysInAWeek = 7; - -/** 一週間あたりの稼ぎを計算する */ -export function weeklySalary(dayRate: number) { - return daysInAWeek * dayRate; -} -``` - -JavaScriptとしての出力は一緒です。 diff --git a/packages/tsconfig-reference/copy/ja/options/suppressExcessPropertyErrors.md b/packages/tsconfig-reference/copy/ja/options/suppressExcessPropertyErrors.md deleted file mode 100644 index f5aff66fab9c..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/suppressExcessPropertyErrors.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -display: "Suppress Excess Property Errors" -oneline: "Allow additional properties being set during creation of types" ---- - -このオプションにより、次の例に示すような、プロパティが過剰に定義されているときのエラーを抑止します: - -```ts twoslash -// @errors: 2322 -type Point = { x: number; y: number }; -const p: Point = { x: 1, y: 3, m: 10 }; -``` - -このフラグは、[TypeScript 1.6](/docs/handbook/release-notes/typescript-1-6.html#stricter-object-literal-assignment-checks)のオブジェクトリテラルの厳密チェックへの移行を助けるために追加されました。 - -モダンなコードベースでの、このフラグの利用は推奨されません。エラー抑止が必要な箇所で、都度`// @ts-ignore`を利用できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/suppressImplicitAnyIndexErrors.md b/packages/tsconfig-reference/copy/ja/options/suppressImplicitAnyIndexErrors.md deleted file mode 100644 index 0f5821b46017..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/suppressImplicitAnyIndexErrors.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -display: "Suppress Implicit Any Index Errors" -oneline: "Remove the warning when using string indexes to access unknown properties" ---- - -`suppressImplicitAnyIndexErrors`を有効化すると、次の例に示すようなオブジェクトへインデックスアクセスしたときの暗黙的anyについてのエラーが抑止されます: - -```ts twoslash -// @noImplicitAny: true -// @suppressImplicitAnyIndexErrors: false -// @strict: true -// @errors: 7053 -const obj = { x: 10 }; -console.log(obj["foo"]); -``` - -`suppressImplicitAnyIndexErrors`はかなり影響の大きい方法です。代わりに`@ts-ignore`コメントの利用を推奨します: - -```ts twoslash -// @noImplicitAny: true -// @strict: true -const obj = { x: 10 }; -// @ts-ignore -console.log(obj["foo"]); -``` diff --git a/packages/tsconfig-reference/copy/ja/options/target.md b/packages/tsconfig-reference/copy/ja/options/target.md deleted file mode 100644 index 7a60441a3673..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/target.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Target" -oneline: "Set the supported JavaScript language runtime to transpile to" ---- - -モダンブラウザーはすべてのES6機能をサポートしているため、`ES6`は良い選択です。 -もし、コードをより古い環境へデプロイするのであれば、より下位の値を、逆により新しい環境での動作が保証される場合は、より上位の値をターゲットとして選択してください。 - -`target`設定は、どのJS機能が古いJavaScript構文にトランスパイルされ、どの機能がそのまま残されるかを変更します。 -例えば`target`がES5以下である場合、アロー関数`() => this`は等価な`function`式へ変換されます。 - -`target`の変更は[`lib`](#lib)のデフォルト値も変更します。 -必要に応じて`target`と`lib`の値を組み合わせることも可能ですが、簡単に`target`の値のみを設定することも可能です。 - -もし動作環境がNode.jsのみであるならば、Nodeのベースバージョン毎に推奨される`target`は次のとおりです: - -| Name | Supported Target | -| ------- | ---------------- | -| Node 8 | `ES2017` | -| Node 10 | `ES2018` | -| Node 12 | `ES2019` | - -この表は[node.green](https://node.green)のデータベースを元に作成しています。 - -`ESNext` という特別な値はTypeScriptがサポートしている最新のターゲットバージョンを参照します。 -この設定値は、異なるTypeScriptのバージョン間におけるターゲットバージョンの一致を意味せず、アップグレード予測が困難になる可能性があるため、注意して利用する必要があります。 diff --git a/packages/tsconfig-reference/copy/ja/options/traceResolution.md b/packages/tsconfig-reference/copy/ja/options/traceResolution.md deleted file mode 100644 index e91c04813a67..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/traceResolution.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Trace Resolution" -oneline: "Log out paths when resolving all modules" ---- - -あるモジュールがコンパイル対象に含まれていない理由をデバッグするために用います。 -`traceResolutions`を`true`にするとTypeScriptが処理された各々のファイルについてモジュール解決過程の情報を出力するようになります。 - -この設定についてより詳細に知りたい場合、[ハンドブック](/docs/handbook/module-resolution.html#tracing-module-resolution)をご覧ください。 diff --git a/packages/tsconfig-reference/copy/ja/options/tsBuildInfoFile.md b/packages/tsconfig-reference/copy/ja/options/tsBuildInfoFile.md deleted file mode 100644 index 4241244a1798..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/tsBuildInfoFile.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "TS Build Info File" -oneline: "Set the folder for .tsbuildinfo files" ---- - -この設定により、インクリメンタルコンパイル情報を複合プロジェクトの一部として保存するためのファイルを指定できるため、より大きなTypeScriptコードベースを迅速に構築できます。 -複合プロジェクトについては[ハンドブック](/docs/handbook/project-references.html)でより詳しく知ることができます。 - -このオプションは、TypeScriptがプロジェクトのビルド状態を追跡するためのファイルをディスクのどこに保存するかを設定します。 -デフォルトは、JavaScriptファイルの出力先と同じフォルダに保存されます。 diff --git a/packages/tsconfig-reference/copy/ja/options/typeAcquisition.md b/packages/tsconfig-reference/copy/ja/options/typeAcquisition.md deleted file mode 100644 index a31129f60c72..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/typeAcquisition.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -display: "Type Acquisition" -oneline: "Sets of options for Automatic Type Acquisition in JavaScript" ---- - -エディターにJavaScriptプロジェクトが存在する場合、TypeScriptは`@types`で定義されるDefinitelyTypedから提供されるファイルを用いて、`node_modules`のための型ファイルを自動で提供します。 -これは自動型取得と呼ばれており、また設定の`typeAcquisition`を使ってカスタマイズできます。 - -この機能を無効化したりカスタマイズする場合、プロジェクトのルートに`jsconfig.json`ファイルを作成してください: - -```json -{ - "typeAcquisition": { - "enable": false - } -} -``` - -プロジェクトに含めるべき特定のモジュールがある場合(それが`node_modules`には存在しない場合): - -```json -{ - "typeAcquisition": { - "include": ["jest"] - } -} -``` - -モジュールが自動で取得されるべきでない場合。例えば、そのライブラリが`node_modules`に含まれてはいるが、チームでこのライブラリを利用しないことを合意している場合: - -```json -{ - "typeAcquisition": { - "exclude": ["jquery"] - } -} -``` diff --git a/packages/tsconfig-reference/copy/ja/options/typeRoots.md b/packages/tsconfig-reference/copy/ja/options/typeRoots.md deleted file mode 100644 index 3cb2576a819e..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/typeRoots.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -display: "Type Roots" -oneline: "locations where TypeScript should look for type definitions" ---- - -デフォルトでは、_表示されている_すべての"`@types`"パッケージがコンパイル時にインクルードされます。 -プロジェクトを囲んでいる任意のフォルダの`node_modules/@types`内のパッケージが_表示されている_とみなされます。 -例えば、`./node_modules/@types/`、`../node_modules/@types/`、`../../node_modules/@types/`に存在するパッケージが該当します。 - -`typeRoots`を設定すると、`typeRoots`配下のパッケージ_のみ_がインクルードされます。例えば: - -```json -{ - "compilerOptions": { - "typeRoots": ["./typings", "./vendor/types"] - } -} -``` - -この設定ファイルは、`./typings`と`./vendor/types`以下の_すべての_パッケージがインクルードされ、`./node_modules/@types`のパッケージはインクルードされません。 -パスはすべて、`tsconfig.json`からの相対パスです。 diff --git a/packages/tsconfig-reference/copy/ja/options/types.md b/packages/tsconfig-reference/copy/ja/options/types.md deleted file mode 100644 index 2f54df024ad4..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/types.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -display: "Types" -oneline: "Used to create an allowlist of types to be included in the compile" ---- - -デフォルトでは、すべての_表示されている_"`@types`"パッケージがコンパイル時にインクルードされます。 -プロジェクトを囲んでいる任意のフォルダの`node_modules/@types`内のパッケージが_表示されている_とみなされます。 -例えば、`./node_modules/@types/`、`../node_modules/@types/`、`../../node_modules/@types/`に存在するパッケージが該当します。 - -`types`を設定すると、リストに列挙したパッケージのみがインクルードされます。例えば: - -```json -{ - "compilerOptions": { - "types": ["node", "lodash", "express"] - } -} -``` - -この`tsconfig.json`ファイルは、`./node_modules/@types/node`と`./node_modules/@types/lodash`と`./node_modules/@types/express`_のみ_をインクルードするようになります。 -`node_modules/@types/*`配下にある他のパケージはインクルードされません。 - -この機能は[`typeRoots`](#typeRoots)と違い、インクルードしたいtypesパッケージだけを厳密に指定できます。一方、[`typeRoots`](#typeRoots)は必要としている特定のフォルダを指定できます。 diff --git a/packages/tsconfig-reference/copy/ja/options/useDefineForClassFields.md b/packages/tsconfig-reference/copy/ja/options/useDefineForClassFields.md deleted file mode 100644 index b2ddc256444d..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/useDefineForClassFields.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Use Define For Class Fields" -oneline: "Use define characteristics for handling class fields" ---- - -このフラグは、最新のClassフィールドの仕様へ移行するために用います。TypeScriptのClassフィールド記法は、TC39がClassフィールドの仕様の合意に至るよりも何年も前に導入されました。最新の仕様バージョンは、TypeScriptの実装とは実行時の挙動が異なりますが、構文は同じです。 - -このフラグにより、ECMAが定める最新の実行時挙動へ移行できます。 - -移行の詳細については、[3.7 リリースノート](/docs/handbook/release-notes/typescript-3-7.html#the-usedefineforclassfields-flag-and-the-declare-property-modifier)を参照してください。 diff --git a/packages/tsconfig-reference/copy/ja/options/watchDirectory.md b/packages/tsconfig-reference/copy/ja/options/watchDirectory.md deleted file mode 100644 index c119baa1d461..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/watchDirectory.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "watchDirectory" -oneline: "Determine how directories are watched" ---- - -再帰的なファイル監視機能を持たないシステムで、ディレクトリツリー全体を監視する方法を指定します。 - -- `fixedPollingInterval`: すべてのディレクトリの変更を一定間隔で毎秒数回チェックします。 -- `dynamicPriorityPolling`: 変更頻度の低いディレクトリがチェックされる頻度が低くなるような動的なキューを使用します。 -- `useFsEvents` (デフォルト): ディレクトリの変更に対するオペレーティングシステム/ファイルシステムのネイティブイベントの使用を試みます。 diff --git a/packages/tsconfig-reference/copy/ja/options/watchFile.md b/packages/tsconfig-reference/copy/ja/options/watchFile.md deleted file mode 100644 index 4333c23648fb..000000000000 --- a/packages/tsconfig-reference/copy/ja/options/watchFile.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -display: "watchFile" -oneline: "What technique should the watcher use" ---- - -個々のファイルを監視する方法を指定します。 - -- `fixedPollingInterval`: すべてのファイルの変更を一定間隔で毎秒数回チェックします。 -- `priorityPollingInterval`: すべてのファイルの変更を毎秒数回チェックしますが、ヒューリスティックスを使用して他のファイルよりも少ない頻度で特定のタイプのファイルをチェックします。 -- `dynamicPriorityPolling`: 変更頻度の低いファイルがチェックされる頻度が低くなるような動的なキューを使用します。 -- `useFsEvents` (デフォルト): オペレーティングシステム/ファイルシステムのネイティブイベントの使用をファイルの変更に試みます。 -- `useFsEventsOnParentDirectory`: ファイルの親ディレクトリの変更を監視するためにオペレーティングシステム/ファイルシステムのネイティブイベントを使用を試みます。 diff --git a/packages/tsconfig-reference/copy/ja/sections/compilerOptions.md b/packages/tsconfig-reference/copy/ja/sections/compilerOptions.md deleted file mode 100644 index 4425e45fd5af..000000000000 --- a/packages/tsconfig-reference/copy/ja/sections/compilerOptions.md +++ /dev/null @@ -1,3 +0,0 @@ -### コンパイラオプション - -これらのオプションはTypeScriptの設定の大部分を占めており、TypeScriptがどのように動作すべきかを扱います。 diff --git a/packages/tsconfig-reference/copy/ja/sections/top_level.md b/packages/tsconfig-reference/copy/ja/sections/top_level.md deleted file mode 100644 index e239f6dc203f..000000000000 --- a/packages/tsconfig-reference/copy/ja/sections/top_level.md +++ /dev/null @@ -1,3 +0,0 @@ -### ルートフィールド - -まずは、TSConfigのルートオプションです - これらのオプションはTypeScriptやJavaScriptプロジェクトの設定方法に関連したものです。 diff --git a/packages/tsconfig-reference/copy/ja/sections/watchOptions.md b/packages/tsconfig-reference/copy/ja/sections/watchOptions.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/tsconfig-reference/copy/ko/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/ko/categories/Additional_Checks_6176.md deleted file mode 100644 index cc23892e4d8d..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Linter Checks" ---- - -컴파일러 vs 린터의 경계를 넘는 추가 검사 모음입니다. 좀 더 상세한 규칙을 원한다면 이 옵션보다는 eslint 같은 도구 사용을 추천합니다. diff --git a/packages/tsconfig-reference/copy/ko/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/ko/categories/Advanced_Options_6178.md deleted file mode 100644 index b65543879298..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Advanced" ---- - -디버깅에 도움을 주는 플래그 diff --git a/packages/tsconfig-reference/copy/ko/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/ko/categories/Basic_Options_6172.md deleted file mode 100644 index 4a320e4575ed..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Project Options" ---- - -이 설정은 프로젝트의 런타임 예상 동작, JavaScript 파일을 내보낼 위치나 방법 그리고 기존 JavaScript 코드가 통합되는 수준을 정의하는데 사용됩니다. diff --git a/packages/tsconfig-reference/copy/ko/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/ko/categories/Command_line_Options_6171.md deleted file mode 100644 index 1de7ca5a0fd3..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Command Line" ---- diff --git a/packages/tsconfig-reference/copy/ko/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/ko/categories/Experimental_Options_6177.md deleted file mode 100644 index 4c8217b54bc5..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Experimental" ---- - -TypeScript는 JavaScript 언어에 확실히 추가될 기능만 포함하기 위해 노력합니다. - -어떤 기능은 이 규칙에서 예외가 될 만큼 강력한 경우가 있으며, 실험적인 컴파일러 플래그로 존재합니다. -이러한 기능이 포함된 버전은 JavaScript 언어에 추가될 때 의도와 다를 수 있기 때문에 조심스럽게 간주됩니다. diff --git a/packages/tsconfig-reference/copy/ko/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/ko/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index 089ba6f9d8cb..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Module Resolution" ---- diff --git a/packages/tsconfig-reference/copy/ko/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/ko/categories/Project_Files_0.md deleted file mode 100644 index 3b9de28fb053..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "File Inclusion" ---- - -이 설정은 TypeScript가 올바른 파일을 선택할 수 있도록 합니다. diff --git a/packages/tsconfig-reference/copy/ko/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/ko/categories/Source_Map_Options_6175.md deleted file mode 100644 index 02972f15d165..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Source Maps" ---- - -TypeScript는 JavaScript 소스 맵 표준에 적합한 추가적인 파일을 생성하여, -개발자가 이해할 수 있는 풍부한 디버깅 툴과 충돌 보고서를 제공합니다. - -위 기능이 필요한 파일과 함께 해당 `.map` 파일이 생성됩니다. diff --git a/packages/tsconfig-reference/copy/ko/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/ko/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index 5810e0225e9f..000000000000 --- a/packages/tsconfig-reference/copy/ko/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Strict Checks" ---- - -[컴파일러 옵션 `strict`](#strict)를 사용해 빌드 시 가능한 모든 개선점을 옵트-인하는 걸 추천합니다. - -TypeScript는 광범위한 JavaScript 패턴과 기본 값을 지원해 이런 스타일을 수용하는 상당한 유연성을 가집니다. -종종 코드베이스의 안전성과 잠재적 확장성은 이런 기술 중 일부와 상충 될 수 있습니다. - -다양한 JavaScript 버전을 지원하기 때문에, TypeScript를 새 버전으로 업데이트하면 두 가지 유형의 오류를 발견할 수 있습니다. - -- TypeScript가 JavaScript의 이해도를 개선해 발견한 코드베이스에 이미 존재했던 오류들. -- 새로운 문제 영역을 다루는 새로운 오류 모음. - -일반적으로 TypeScript는 후자의 오류 집합에 대한 컴파일러 플래그를 추가하며, 기본적으로 비활성화됩니다. diff --git a/packages/tsconfig-reference/copy/ko/intro.md b/packages/tsconfig-reference/copy/ko/intro.md deleted file mode 100644 index 4ade26c18864..000000000000 --- a/packages/tsconfig-reference/copy/ko/intro.md +++ /dev/null @@ -1,6 +0,0 @@ -## TSConfig Reference 소개 - -디렉터리의 TSConfig 파일은 그 디렉터리가 TypeScript 또는 JavaScript 프로젝트의 루트 디렉터리임을 나타냅니다. -TSConfig 파일은 `tsconfig.json` 또는 `jsconfig.json` 일 수 있으며, 둘 다 같은 동작과 설정 변수의 집합을 가지고 있습니다. - -이 페이지에서는 TSConfig 파일 내에서 사용할 수 있는 다양한 플래그를 모두 다룹니다. 모든 플래그의 개요를 시작으로 JSON 파일의 루트 속성을 살펴본 다음, 옵션의 대부분을 구성하는 `compilerOptions`를 거쳐 `watchOptions`로 마무리합니다. diff --git a/packages/tsconfig-reference/copy/ko/options/alwaysStrict.md b/packages/tsconfig-reference/copy/ko/options/alwaysStrict.md deleted file mode 100644 index 2f1c9b827959..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/alwaysStrict.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Always Strict" -oneline: "Ensure 'use strict' is always emitted" ---- - -파일을 ECMAScript 엄격 모드로 분석 하고, 각 소스 파일에 "use strict"를 생성합니다. - -ES5에 도입된 [ECMAScript 엄격](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode) 모드는 성능 향상을 위해 JavaScript 엔진의 런타임 동작을 변화시켜, 일련의 에러를 무시하지 않고 발생시킵니다. diff --git a/packages/tsconfig-reference/copy/ko/options/baseUrl.md b/packages/tsconfig-reference/copy/ko/options/baseUrl.md deleted file mode 100644 index 4a33215e6845..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/baseUrl.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -display: "Base Url" -oneline: "Set a baseurl for relative module names" ---- - -절대 경로 참조가 아닌 모듈 이름을 해결하기 위한 기본 디렉터리를 설정할 수 있습니다. - -절대 경로로 해결하기 위한 루트 폴더를 정의할 수도 있습니다. 예를 들면, - -``` -baseUrl -├── ex.ts -├── hello -│ └── world.ts -└── tsconfig.json -``` - -이 프로젝트에서` "baseUrl": "./"`을 사용하면, TypeScript는`tsconfig.json`과 같은 폴더에서 시작하는 파일을 찾습니다. - -```ts -import { helloWorld } from "hello/world"; - -console.log(helloWorld); -``` - -항상 사용하는 `"../"` 또는 `"./"`같은 import에 질렸거나, 파일을 이동해서 변경해야 할 때, -사용할 수 있는 좋은 방법입니다. diff --git a/packages/tsconfig-reference/copy/ko/options/charset.md b/packages/tsconfig-reference/copy/ko/options/charset.md deleted file mode 100644 index 987412227252..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/charset.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Charset" -oneline: "Manually set the text encoding for reading files" ---- - -이전 버전의 TypeScript에서는, 디스크에서 텍스트 파일을 읽을 때 인코딩 방식을 제어했습니다. -현재 TypeScript는 UTF-8 인코딩을 전제로 합니다. 하지만 UTF-16 (BE 와 LE) 또는 UTF-8 BOMs도 정확하게 감지합니다. diff --git a/packages/tsconfig-reference/copy/ko/options/declaration.md b/packages/tsconfig-reference/copy/ko/options/declaration.md deleted file mode 100644 index 2c5e47b7749c..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Declaration" -oneline: "Generates .d.ts files from TypeScript and JavaScript files in your project." ---- - -프로젝트 내의 모든 TypeScript나 JavaScript 파일에 대한 `.d.ts`파일을 생성합니다. -이러한 `.d.ts`파일은 모듈의 외부 API를 설명하는 타입 정의 파일입니다. -`.d.ts` 파일 사용하면, TypeScript와 같은 도구로 intellisense와 타입이 정해지지 않은 코드의 정확한 타입을 제공할 수 있습니다. - -`declaration`이 `true`로 설정되면, 아래와 같은 TypeScript 코드로 컴파일러를 실행합니다: - -```ts twoslash -export let helloWorld = "hi"; -``` - -아래와 같은`index.js`파일이 생성될 것입니다: - -```ts twoslash -// @showEmit -export let helloWorld = "hi"; -``` - -해당 `helloWorld.d.ts`: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let helloWorld = "hi"; -``` - -JavaScript 파일 용 `.d.ts`파일로 작업할 때, [`emitDeclarationOnly`](#emitDeclarationOnly)를 사용하거나 [`outDir`](#outDir)를 사용하여 JavaScript 파일이 덮어써지지 않도록 할 수 있습니다. diff --git a/packages/tsconfig-reference/copy/ko/options/exclude.md b/packages/tsconfig-reference/copy/ko/options/exclude.md deleted file mode 100644 index 48c791defcf1..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/exclude.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Exclude" -oneline: "Filters results from the `include` option." ---- - -`include` 에서 파일을 포함할 때 생략할 파일 이름이나 패턴을 배열로 지정합니다. - -**중요** : `exclude` 는 _오직_ `include` 의 설정의 결과로 포함되는 파일만 변경합니다. `exclude` 로 지정된 파일은 코드상의 `types`를 포함하여, `import`에 의해 코드 베이스의 일부가 될 수 있습니다. 이는 `/// - -``` -. -├── scripts ⨯ -│ ├── lint.ts ⨯ -│ ├── update_deps.ts ⨯ -│ └── utils.ts ⨯ -├── src ✓ -│ ├── client ✓ -│ │ ├── index.ts ✓ -│ │ └── utils.ts ✓ -│ ├── server ✓ -│ │ └── index.ts ✓ -├── tests ✓ -│ ├── app.test.ts ✓ -│ ├── utils.ts ✓ -│ └── tests.d.ts ✓ -├── package.json -├── tsconfig.json -└── yarn.lock -``` - -`include` 와 `exclude`는 글롭(glob) 패턴을 만들기 위한 와일드카드 문자를 지원합니다.: - -- `*` 0개 혹은 그 이상의 문자를 매치합니다. (디렉터리 구분자를 제외하고) -- `?` 문자 한 개를 매치합니다. (디렉터리 구분자를 제외하고) -- `**/` 모든 하위 디렉터리를 매치합니다. - -만약 글롭 패턴에 파일 확장자가 포함되어있지 않다면 오직 지원되는 확장자를 가진 파일들만 포함됩니다. (e. g. `.ts`, `.tsx`, `.d.ts`가 기본적으로 포함되며, `allowJS`가 true로 설정되었을 경우에는 `.js`, `.jsx` 까지 포함) diff --git a/packages/tsconfig-reference/copy/ko/options/jsxFragmentFactory.md b/packages/tsconfig-reference/copy/ko/options/jsxFragmentFactory.md deleted file mode 100644 index 478f8f1e5c5d..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/jsxFragmentFactory.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "jsxFragmentFactory" -oneline: "Specify the JSX Fragment reference to use for fragements when targeting React JSX emit, e.g. 'React.Fragment' or 'Fragment'." ---- - -`Fragment`와 같이, `JsxFactory` 컴파일러 옵션이 지정된 react JSX 출력을 목표로 할 때 사용할 JSX 프래그먼트 팩토리 함수를 지정합니다. - -예를 들어 이 TSConfig의 경우: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment" - } -} -``` - -이 TSX 파일은: - -```tsx -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` - -다음과 같을 것입니다: - -```tsx twoslash -// @showEmit -// @showEmittedFile: index.js -// @jsxFactory: h -// @jsxFragmentFactory: Fragment -// @noErrors -// @target: esnext -// @module: commonjs - -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` - -이 옵션은 [바벨의 `/* @jsxFrag h */` 지시문](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#fragments)과 매우 유사한 파일 단위로 사용이 가능합니다. - -예를 들어: - -```tsx twoslash -/** @jsx h */ -/** @jsxFrag Fragment */ - -import { h, Fragment } from "preact"; - -const HelloWorld = () => ( - <> -
Hello
- -); -``` diff --git a/packages/tsconfig-reference/copy/ko/options/lib.md b/packages/tsconfig-reference/copy/ko/options/lib.md deleted file mode 100644 index 10c862b06688..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/lib.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Lib" -oneline: "A list of bundled library declaration files which describe the target runtime environment." ---- - -TypeScript는 JS API(`Math` 와 같은)에 대한 기본적인 타입 정의와 브라우저 환경(`document` 와 같은)에 있는 타입 정의를 포함합니다. -이 뿐만 아니라 TypeScript는 지정한 `target` 과 일치하는 최신 JS 기능을 위한 API도 포함되어 있습니다; 예를 들어 `target`이 `ES6` 이상이면 `Map` 에 대한 정의를 사용할 수 있습니다. - -이는 몇 가지 이유에 의해 변경될 수 있습니다: - -- 프로그램이 브라우저에서 동작하지 않아 `"dom"` 타입의 정의가 필요 없을 경우 -- 런타임 플랫폼이 특정 JavaScript API 객체를 제공하지만(폴리필을 통해서) 아직 주어진 ECMAScript 버전의 문법을 일부 지원하지 않을 경우 -- 더 높은 버전의 ECMAScript을 위한 폴리필이나 네이티브 구현이 있을 경우 - -### 상위 레벨 라이브러리 - -| Name | Contents | -| ------------ | ------------------------------------------------------------ | -| `ES5` | 모든 ES3 및 ES5 기능에 대한 핵심적인 정의 | -| `ES2015` | ES2015(또는 ES6로 알려진)에서 추가로 사용 가능한 API - `array.find`, `Promise`, `Proxy`, `Symbol`, `Map`, `Set`, `Reflect`, 기타 등등 | -| `ES6` | "ES2015" 의 별칭 | -| `ES2016` | ES2016에서 추가로 사용 가능한 API - `array.include`, 기타 등등 | -| `ES7` | "ES2016" 의 별칭 | -| `ES2017` | ES2017 에서 추가로 사용 가능한 API - `Object.entries`, `Object.values`, `Atomics`, `SharedArrayBuffer`, `date.formatToParts`, typed arrays, 기타 등등 | -| `ES2018` | ES2018 에서 추가로 사용 가능한 API - `async` iterables, `promise.finally`, `Intl.PluralRules`, `rexexp.groups`, 기타 등등 | -| `ES2019` | ES2019 에서 추가로 사용 가능한 API - `array.flat`, `array.flatMap`, `Object.fromEntries`, `string.trimStart`, `string.trimEnd`, 기타 등등 | -| `ES2020` | ES2020 에서 추가로 사용 가능한 API - `string.matchAll`, etc. | -| `ESNext` | ESNext 에서 추가로 사용 가능한 API - 이는 JavaScript의 사양이 향상될 때 마다 변함. | -| `DOM` | [DOM](https://developer.mozilla.org/docs/Glossary/DOM) 정의 - `window`, `document`, etc. | -| `WebWorker` | [웹 워커(WebWorker)](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Using_web_workers) 환경에서 추가로 사용 가능한 API | -| `ScriptHost` | [윈도우 스크립트 호스트 시스템(Windows Script Hosting System)](https://wikipedia.org/wiki/Windows_Script_Host) 을 위한 API | - -### 개별적인 라이브러리 컴포넌트 - -| Name | -| ------------------------- | -| `DOM.Iterable` | -| `ES2015.Core` | -| `ES2015.Collection` | -| `ES2015.Generator` | -| `ES2015.Iterable` | -| `ES2015.Promise` | -| `ES2015.Proxy` | -| `ES2015.Reflect` | -| `ES2015.Symbol` | -| `ES2015.Symbol.WellKnown` | -| `ES2016.Array.Include` | -| `ES2017.object` | -| `ES2017.Intl` | -| `ES2017.SharedMemory` | -| `ES2017.String` | -| `ES2017.TypedArrays` | -| `ES2018.Intl` | -| `ES2018.Promise` | -| `ES2018.RegExp` | -| `ES2019.Array` | -| `ES2019.Full` | -| `ES2019.Object` | -| `ES2019.String` | -| `ES2019.Symbol` | -| `ES2020.Full` | -| `ES2020.String` | -| `ES2020.Symbol.wellknown` | -| `ESNext.AsyncIterable` | -| `ESNext.Array` | -| `ESNext.Intl` | -| `ESNext.Symbol` | - -위 목록들은 최신이 아닐수도 있습니다. 전체적인 목록은 [TypeScript의 소스 코드](https://github.com/microsoft/TypeScript/tree/master/lib) 에서 조회할 수 있습니다. diff --git a/packages/tsconfig-reference/copy/ko/options/locale.md b/packages/tsconfig-reference/copy/ko/options/locale.md deleted file mode 100644 index 3f96746722b4..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/locale.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -display: "Locale" -oneline: "Set the language of the tsc output" ---- - -TypeScript는 여러 언어를 지원합니다. 하지만 `tsconfig.json`를 통해 설정 할 수 없습니다. 오직 host의 envrionment 혹은 CLI flag인 `--locale`로 설정 할 수 있습니다. E.g. `tsc --locale ru`. - -### TypeScript 3.7 에서 지원되는 Locale - -| Name | Locale | -| ----------------- | ------- | -| 브라질 포르투갈어 | `pr-BR` | -| 중국어 (간체) | `zh-TW` | -| 중국어 (번체) | `zh-CN` | -| 체코어 | `cs-CZ` | -| 영어 (US) | `en-US` | -| 프랑스어 | `fr-FR` | -| 독일어 | `de-DE` | -| 이탈리아어 | `it-IT` | -| 일본어 | `ja-JP` | -| 한국어 | `ko-KR` | -| 폴란드어 | `pl-PL` | -| 러시아어 | `ru-RU` | -| 스페인어 | `es-ES` | -| 터키어 | `tr-TR` | diff --git a/packages/tsconfig-reference/copy/ko/options/newLine.md b/packages/tsconfig-reference/copy/ko/options/newLine.md deleted file mode 100644 index b1ad41039ebb..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/newLine.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "New Line" -oneline: "Set the newline character" ---- - -파일을 내보낼 때 줄바꿈의 끝을 지정합니다 : 'CRLF' (docs) 또는 'LF' (unix). \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/ko/options/noImplicitAny.md b/packages/tsconfig-reference/copy/ko/options/noImplicitAny.md deleted file mode 100644 index 40cf0a3c6129..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "No Implicit Any" -oneline: "Avoid introducing anys inside your codebase when a type could be specified" ---- - -타입이 표기되어 있지 않아, 타입 추론을 할 수 없을 때 TypeScript는 해당 변수의 타입을 `any`로 대체합니다. - -이것으로 인해 일부 오류가 누락될 수 있습니다. 예를 들면: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // 오류가 아닌가요? - console.log(s.subtr(3)); -} -fn(42); -``` - -그러나 `noImplicitAny`를 활성화하면 TypeScript는 `any`를 추론 할 때마다 오류를 발생시킵니다: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/ko/options/paths.md b/packages/tsconfig-reference/copy/ko/options/paths.md deleted file mode 100644 index 2cfaf421e97c..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/paths.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Paths" -oneline: "A set of locations to look for imports in" ---- - -가져오기를 `baseUrl` 과 관련된 조회 위치로 다시 매핑하는 일련의 항목으로, [handbook](/docs/handbook/module-resolution.html#path-mapping)에 `paths` 의 더 많은 coverage가 수록되어 있습니다. - -`paths` 를 사용하면 Typescript가 `require`/`import` 에서 가져오기를 해결하는 방법을 선언 할 수 있습니다. - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": ".", // 이 옵션은 반드시 "paths"가 명확할 때 지정해야 합니다. - "paths": { - "jquery": ["node_modules/jquery/dist/jquery"] // 이 매핑은 "baseUrl"에 상대적입니다. - } - } -} -``` - -이렇게하면`import "jquery"`를 작성할 수 있고 모든 올바른 입력을 로컬에서 얻을 수 있습니다. - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": "src", - "paths": { - "app/*": ["app/*"], - "config/*": ["app/_config/*"], - "environment/*": ["environments/*"], - "shared/*": ["app/_shared/*"], - "helpers/*": ["helpers/*"], - "tests/*": ["tests/*"] - }, -} -``` - -이렇게 하면 TypeScript 파일 resolver가 많은 custom prefix로 코드를 찾을 수 있도록 지원할 수 있습니다. -이 패턴을 사용하면 codebase 안에서 긴 상대 경로를 피할 수 있습니다. diff --git a/packages/tsconfig-reference/copy/ko/options/sourceRoot.md b/packages/tsconfig-reference/copy/ko/options/sourceRoot.md deleted file mode 100644 index 5e0a89d641f0..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/sourceRoot.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "Source Root" -oneline: "Sets the root path for debuggers to find the reference source code" ---- - -소스의 상대 위치 대신 디버거가 TypeScript 파일을 찾을 위치를 지정합니다. -이 문자열은 경로 또는 URL을 사용할 수 있는 소스-맵 내에서 그대로 처리됩니다: - -```json tsconfig -{ - "compilerOptions": { - "sourceMap": true, - "sourceRoot": "https://my-website.com/debug/source/" - } -} -``` - -`index.js` 에 `https://my-website.com/debug/source/index.ts` 위치에 소스 파일이 있다고 명시해야 합니다. diff --git a/packages/tsconfig-reference/copy/ko/options/strict.md b/packages/tsconfig-reference/copy/ko/options/strict.md deleted file mode 100644 index 95a8e82caf63..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/strict.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Strict" -oneline: "Enable all strict type checking options." ---- - -`strict` 플래그는 다양한 타입 검사를 가능하게 하여 프로그램 정확성을 더욱 보장합니다. -strict 플래그를 켜는 것은 아래에 설명된 모든 _strict mode family_ 옵션을 활성화하는 것과 같습니다. -필요에 따라 개별 strict mode family 검사를 끌 수 있습니다. - -향후 버전의 TypeScript는 이 플래그에서 추가적인 엄격한 검사를 도입할 수 있어, TypeScript를 업그레이드하면 프로그램에 새로운 타입 오류가 발생할 수도 있습니다. -적당히 가능할 때, 해당 플래그를 추가하여 동작을 비활성화합니다. diff --git a/packages/tsconfig-reference/copy/ko/options/target.md b/packages/tsconfig-reference/copy/ko/options/target.md deleted file mode 100644 index b9d2b408e42f..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/target.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "Target" -oneline: "Set the JavaScript language version for emitted JavaScript and include compatible library declarations." ---- - -최신 브라우저는 모든 ES6 기능을 지원하므로 `ES6`는 좋은 선택입니다. -만약 코드가 이전 환경에서 배포된 경우라면 더 낮은 버전을, 최신 환경에서 실행이 보장되는 경우 더 높은 버전을 선택할 수 있습니다. - -`target` 설정은 하향 평준화된 JS 기능과 온전히 남아있는 것을 변경합니다. -예를 들어 `target`이 ES5 이하인 경우, 화살 함수 `() => this`는 동등한 `function` 표현식으로 바뀝니다. - -`target`을 바꾼다는 것은 마찬가지로 [`lib`](#lib)의 기본값을 바꿉니다. -원하는 대로 `target` 및 `lib` 설정을 "믹스 앤 매치" 할 수 있지만, 편의를 위해 `target`만 설정할 수 있습니다. - -Node와 같은 개발자 플랫폼의 경우 버전에 따라 대상에 대한 특정 기준이 있습니다. [tsconfig/bases](https://github.com/tsconfig/bases#centralized-recommendations-for-tsconfig-bases)에서 공통 플랫폼 및 해당 버전에 대한 커뮤니티 구성 TSConfig 세트를 찾을 수 있습니다. - -`ESNext` 값은 특별하게 TypeScript가 지원하는 가장 높은 버전을 나타냅니다. -이 설정은 TypeScript 버전과 같다는 것을 의미하는 것이 아니며 업그레이드 예측 가능성을 낮출 수 있으므로 주의해야 합니다. diff --git a/packages/tsconfig-reference/copy/ko/options/traceResolution.md b/packages/tsconfig-reference/copy/ko/options/traceResolution.md deleted file mode 100644 index 30d350457e46..000000000000 --- a/packages/tsconfig-reference/copy/ko/options/traceResolution.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Trace Resolution" -oneline: "Log paths used during the `moduleResolution` process." ---- - -사용자가 모듈이 포함되지 않은 이유를 디버깅하고자 할 때. -`traceResolutions`를 `true`로 설정하여 처리된 각 파일의 처리 과정에 대한 TypeScript 출력 정보를 얻을 수 있습니다. - -[핸드북](/docs/handbook/module-resolution.html#tracing-module-resolution)에서 이에 대한 자세한 내용을 볼 수 있습니다. diff --git a/packages/tsconfig-reference/copy/pt/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/pt/categories/Additional_Checks_6176.md deleted file mode 100644 index dddb91f09141..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Checagens do Linter" ---- - -Uma coleção de checagens extras, que cruzam um pouco os limites do compilador vs linter. Você pode preferir usar uma ferramenta como eslint ao invés dessas opções se você estiver procurando por regras mais profundas. diff --git a/packages/tsconfig-reference/copy/pt/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/pt/categories/Advanced_Options_6178.md deleted file mode 100644 index 979f4a4c6b57..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Avançado" ---- - -Sinalizadores que ajudam na depuração. diff --git a/packages/tsconfig-reference/copy/pt/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/pt/categories/Basic_Options_6172.md deleted file mode 100644 index ffb30a8f44ee..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Opções de Projeto" ---- - -Essas configurações são usadas para definir as expectativas de tempo de execução, como e onde você deseja que o JavaScript seja emitido e o nível de integração que você deseja com o código JavaScript existente no seu projeto. diff --git a/packages/tsconfig-reference/copy/pt/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/pt/categories/Command_line_Options_6171.md deleted file mode 100644 index 8d1f0802f395..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Linha de comando" ---- diff --git a/packages/tsconfig-reference/copy/pt/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/pt/categories/Experimental_Options_6177.md deleted file mode 100644 index 658bc23db1ee..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Experimental" ---- - -TypeScript se esforça para incluir apenas funcionalidades cujas adições estão confirmadas na linguagem Javascript. - -Existem casos que a funcionalidade é atraente o suficiente para ser uma exceção a essa regra, e nesses casos possuem a sinalização do compilador de experimental. -É possível que uma versão dessas funcionalidades seja diferente quando/se forem adicionadas a linguagem Javascript e, portanto, são consideradas de risco. diff --git a/packages/tsconfig-reference/copy/pt/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/pt/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index 566e0cf0a19e..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "Resolução de módulo" ---- diff --git a/packages/tsconfig-reference/copy/pt/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/pt/categories/Project_Files_0.md deleted file mode 100644 index 145b463a730c..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Inclusão de arquivos" ---- - -Estas configurações garantem que o Typescript pegue os arquivos corretos. diff --git a/packages/tsconfig-reference/copy/pt/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/pt/categories/Source_Map_Options_6175.md deleted file mode 100644 index 75459b5a4ddd..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Source Maps" ---- - -Para promover ferramentas de depuração ricas e relatórios de erro que façam sentido aos desenvolvedores, o Typescript suporta a emissão de arquivos adicionais que estão em conformidade com os padrões do Javascript Source Map. - -Estes são enviados como arquivos `.map` que ficam ao lado dos arquivos que representam. diff --git a/packages/tsconfig-reference/copy/pt/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/pt/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index 7f2a4b4e59cd..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Verificações rígidas" ---- - -Recomendamos utilizar [a opção `strict`](#strict) para aceitar todas as melhorias possíveis a medida que são feitas. - -TypeScript suporta um amplo espectro dos padrões do Javascript e padrões para permitir bastante flexibilidade em acomodar estes estilos. -Frequentemente, a segurança e escalabiliade em potencial do código base pode estar em conflito com alguma dessas técnicas. - -Devido a variedade do Javascript suportado, a atualização para uma nova versão do Typescript pode revelar dois tipos de erros: - -- Erros que já existem no seu código base, que o Typescript passa a revelar, dado um melhor entendimento de Javascript. -- Um novo conjunto de erros que abordam um novo escopo de problema. - -O TypeScript irá adicionar um sinalizador de compilador para o último conjunto de erros, e por padrão estes não estão habilitados. diff --git a/packages/tsconfig-reference/copy/pt/categories/Watch_Options_999.md b/packages/tsconfig-reference/copy/pt/categories/Watch_Options_999.md deleted file mode 100644 index 46e7df79e3b1..000000000000 --- a/packages/tsconfig-reference/copy/pt/categories/Watch_Options_999.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Watch Options" ---- - -O TypeScript 3.8 lançou uma nova estratégia para monitorar as pastas, que é crucial para obter as mudanças no `node_modules`. - -Nos sistemas operacionais como Linux, o Typescript instala monitores de diretórios (ao contrário dos monitores de arquivos) no `node_modules` e muitos dos seus sub-diretórios para detectar mudanças nas suas dependências. -Isto é devido a quantidade de monitores de arquivos disponíveis que é eclipsado pelo número de arquivos no `node_modules`, enquanto há muito poucos diretórios para rastrear. - -Como cada projeto deve funcionar melhor com diferentes estratégias, e esta nova abordagem pode não funcionar para o seu fluxo de trabalho, o TypeScript 3.8 introduziu o novo campo `watchOptions` que permite que o usuário diga ao compilador/serviço de linguagem quais estratégias de monitoramento devem ser utilizadas para manter o controle dos diretórios e arquivos. diff --git a/packages/tsconfig-reference/copy/pt/intro.md b/packages/tsconfig-reference/copy/pt/intro.md deleted file mode 100644 index 5795aa5048d4..000000000000 --- a/packages/tsconfig-reference/copy/pt/intro.md +++ /dev/null @@ -1,5 +0,0 @@ -## Introdução às referências do TSConfig - -Ter um arquivo TSConfig em uma pasta indica que esta pasta é a raiz de um projeto TypeScript ou JavaScript. O arquivo TSConfig pode ser um `tsconfig.json` ou um `jsconfig.json`, os dois possuem o mesmo comportamento e as mesmas variáveis de configuração. - -Esta página cobre todas as diferentes opções de configuração disponíveis em um arquivo TSConfig. Ela começa com uma visão geral de todas as configurações, depois passa pelos atributos principais que estão na raiz do arquivo JSON, então fala sobre as `compilerOptions`, que são a maioria das opções e finaliza com as `watchOptions`. diff --git a/packages/tsconfig-reference/copy/pt/options/allowJs.md b/packages/tsconfig-reference/copy/pt/options/allowJs.md deleted file mode 100644 index b4380e517c26..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/allowJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Permitir JS" -oneline: "Permite que o TS inclua arquivos .JS nos imports" ---- - -Permite que arquivos JavaScript sejam importados dentro do seu projeto ao invés de só permitir arquivos `.ts` e `.tsx`. Por exemplo, este arquivo JS: - -```js twoslash -// @filename: carta.js -export const naipePadrao = "Copas"; -``` - -Quando importado em um arquivo TypeScript, vai emitir um erro: - -```ts twoslash -// @errors: 2307 -// @filename: carta.js -module.exports.naipePadrao = "Copas"; -// ---cut--- -// @filename: index.ts -import { naipePadrao } from "./carta"; - -console.log(naipePadrao); -``` - -Mas é importado normalmente com a opção `allowJS` ativada: - -```ts twoslash -// @filename: carta.js -module.exports.naipePadrao = "Copas"; -// ---cut--- -// @allowJs -// @filename: index.ts -import { naipePadrao } from "./carta"; - -console.log(naipePadrao); -``` - -Esta opção pode ser utilizada como uma forma de migrar um projeto JavaScript para TypeScript de forma incremental. Permitindo que arquivos `.ts` e `.tsx` coexistam no mesmo projeto que os arquivos JavaScript. diff --git a/packages/tsconfig-reference/copy/pt/options/allowSyntheticDefaultImports.md b/packages/tsconfig-reference/copy/pt/options/allowSyntheticDefaultImports.md deleted file mode 100644 index 591ad38f438a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/allowSyntheticDefaultImports.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -display: "Permitir Imports Sintéticos Padrão" -oneline: "Permite 'import x from y' quando um módulo não tem um export padrão" ---- - -Quando está ativo, `allowSyntheticDefaultImports` permite que você escreva um import como: - -```ts -import React from "react"; -``` - -Ao invés de: - -```ts -import * as React from "react"; -``` - -Quando o módulo **não** especifica um export padrão. - -Isso não afeta o JavaScript que será emitido no TypeScript, somente a checagem de tipos -Essa opção traz o comportamento do TypeScript in-line com o Babel, onde código extra é emitido no final para que o uso de um export padrão seja mais ergonômico. diff --git a/packages/tsconfig-reference/copy/pt/options/allowUmdGlobalAccess.md b/packages/tsconfig-reference/copy/pt/options/allowUmdGlobalAccess.md deleted file mode 100644 index 3b37ad8fcb08..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/allowUmdGlobalAccess.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Permitir Acesso Global UMD" -oneline: "Assume que todos os imports UMD estão disponíveis globalmente" ---- - -Quando setado para `true`, a flag `allowUmdGlobalAccess` deixa que você acesse todos os exports UMD como globais de dentro dos arquivos de módulo. Um arquivo de módulo é um arquivo que tem imports e/ou exports. Sem essa configuração, usando um export de dentro de um módulo UMD vai pedir uma declaração de import. - -Um caso de exemplo para essa flag seria um projeto web onde você sabe que uma biblioteca em particular (como o jQuery ou Lodash) vai estar sempre disponível em runtime, mas você não pode acessá-la com um import. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/pt/options/allowUnreachableCode.md b/packages/tsconfig-reference/copy/pt/options/allowUnreachableCode.md deleted file mode 100644 index 43e63bad33a1..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/allowUnreachableCode.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -display: "Permitir Código Não Executado" -oneline: "Exibe um erro quando o código nunca será executado" ---- - -Quando: - -- `undefined` (padrão) dá sugestões como avisos para o editor -- `true` todo o código não executável é ignorado -- `false` exibe um erro de compilação quando código não executável é detectado - -Mude para false para desabilitar os avisos sobre código não executável. -Estes avisos são somente sobre código que são provavelmente inalcançáveis e nunca serão executados por conta do uso da sintaxe do JavaScript como, por exemplo: - -```ts -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Com `"allowUnreachableCode": false`: - -```ts twoslash -// @errors: 7027 -// @allowUnreachableCode: false -function fn(n: number) { - if (n > 5) { - return true; - } else { - return false; - } - return true; -} -``` - -Isso não afeta os erros exibidos com base em código que _parece_ ser inalcançável devido à análise de tipos. diff --git a/packages/tsconfig-reference/copy/pt/options/allowUnusedLabels.md b/packages/tsconfig-reference/copy/pt/options/allowUnusedLabels.md deleted file mode 100644 index c3035756a3f9..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/allowUnusedLabels.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -display: "Permitir Labels Não Utilizadas" -oneline: "Exibe um erro quando uma label é criada acidentalmente" ---- - -Defina como false para desabilitar os avisos sobre labels não utilizadas. - -Labels são muito raras no JavaScript e, tipicamente, indicam uma tentativa de escrever um objeto literal: - -```ts twoslash -// @errors: 7028 -// @allowUnusedLabels: false -function verificarIdade(idade: number) { - // Esquecemos o 'return' - if (idade > 18) { - verificado: true; - } -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/alwaysStrict.md b/packages/tsconfig-reference/copy/pt/options/alwaysStrict.md deleted file mode 100644 index 81f61be27728..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/alwaysStrict.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Sempre Estrito" -oneline: "Garante que 'use strict' é sempre emitido no início do arquivo" ---- - -Garante que seus arquivos sejam analisados no modo estrito do ECMAScript e emitam "use strict" para cada arquivo fonte. - -O modo [estrito do ECMAScript](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode) foi introduzido no ES5 e fornece ajustes de comportamento para o runtime do engine JavaScript para melhorar o desempenho e faz um conjunto de erros serem lançados em vez de ignorá-los silenciosamente. diff --git a/packages/tsconfig-reference/copy/pt/options/assumeChangesOnlyAffectDirectDependencies.md b/packages/tsconfig-reference/copy/pt/options/assumeChangesOnlyAffectDirectDependencies.md deleted file mode 100644 index 415546200e2f..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/assumeChangesOnlyAffectDirectDependencies.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Assume que as alterações afetem apenas dependências diretas" -oneline: "Uma opção do modo watch que é drasticamente mais rápida, mas ocasionalmente imprecisa." ---- - -Quando essa opção está ativada, o TypeScript apenas verifica/reconstrói os arquivos que foram alterados, bem como os arquivos que os importam diretamente. Evitando assim a verificação/reconstrução de todos os arquivos que realmente podem ter sido afetados pelas alterações. - -Isso pode ser considerado uma implementação 'rápida' do algoritmo de observação, que pode reduzir drasticamente os tempos de reconstrução incremental às custas de ter que executar a compilação completa ocasionalmente para obter todas as mensagens de erro do compilador. diff --git a/packages/tsconfig-reference/copy/pt/options/baseUrl.md b/packages/tsconfig-reference/copy/pt/options/baseUrl.md deleted file mode 100644 index 337906fe9b77..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/baseUrl.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -display: "URL Base" -oneline: "Configura uma URL base para os nomes relativos de módulos" ---- - -Permite definir um diretório base para resolver nomes de módulo não absolutos. - -Você pode definir uma pasta raiz na qual pode fazer a resolução absoluta do arquivo. Por exemplo. - -``` -URLBase -├── ex.ts -├── ola -│ └── mundo.ts -└── tsconfig.json -``` - -Com `"baseUrl": "./"` no projeto, o TypeScript vai procurar por arquivos começando na mesma pasta do `tsconfig.json`. - -```ts -import { olaMundo } from "ola/mundo"; - -console.log(olaMundo); -``` - -Se você estiver cansado de importações sempre parecidas com `"../"` ou `"./"`, ou precisando -alterá-las à medida que move arquivos, essa é uma ótima maneira de simplificar isso. diff --git a/packages/tsconfig-reference/copy/pt/options/charset.md b/packages/tsconfig-reference/copy/pt/options/charset.md deleted file mode 100644 index 8cac18a225b4..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/charset.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Charset" -oneline: "Seta manualmente o encoding do texto para leitura de arquivos" ---- - -Nas versões anteriores do TypeScript, isso controlava qual codificação era usada ao ler arquivos de texto do disco. -Hoje, o TypeScript assume a codificação UTF-8, mas detectará corretamente as codificações UTF-16 (BE e LE) ou UTF-8 com [BOMs](https://pt.wikipedia.org/wiki/Marca_de_ordem_de_byte). diff --git a/packages/tsconfig-reference/copy/pt/options/checkJs.md b/packages/tsconfig-reference/copy/pt/options/checkJs.md deleted file mode 100644 index 839c9aef0b3a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/checkJs.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Checar JS" -oneline: "Executa o verificador de tipos em arquivos .js do seu projeto" ---- - -Funciona em conjunto com o `allowJs`. Quando o `checkJs` está ativado, os erros são relatados também nos arquivos JavaScript. Isto é -o equivalente a incluir `// @ts-check` na parte superior de todos os arquivos JavaScript incluídos no seu projeto. - -Por exemplo, este é um JavaScript incorreto, de acordo com a definição do tipo `parseFloat` que acompanha o TypeScript: - -```js -// parseFloat só recebe uma string -module.exports.pi = parseFloat(3.124); -``` - -Quando importado em um módulo TypeScript: - -```ts twoslash -// @allowJs -// @filename: constantes.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constantes"; -console.log(pi); -``` - -Você não vai obter nenhum erro. No entanto, se você ativar o `checkJs` então voce também terá mensagens de erro no seu arquivo JavaScript. - -```ts twoslash -// @errors: 2345 -// @allowjs: true -// @checkjs: true -// @filename: constantes.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constantes"; -console.log(pi); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/composite.md b/packages/tsconfig-reference/copy/pt/options/composite.md deleted file mode 100644 index 78ffd8bc0c78..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/composite.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Composição" -oneline: "Usado para criar múltiplos projetos de build" ---- - -A opção `composite` aplica certas restrições que possibilitam que ferramentas de build (incluindo o TypeScript -no modo `--build`) determinem rapidamente se um projeto já foi construído. - -Quando esta configuração está ativada: - -- A configuração `rootDir`, se não foi setada explicitamente, é o diretório que contém o arquivo `tsconfig.json`. - -- Todos os arquivos de implementação devem corresponder a um padrão do `include` ou listados no array `files`. Se esta restrição for violada, o `tsc` informará quais arquivos não foram especificados. - -- `declaration` é setado como `true` - -Você pode encontrar a documentação de projetos TypeScript [no guia](https://www.typescriptlang.org/docs/handbook/project-references.html). diff --git a/packages/tsconfig-reference/copy/pt/options/declaration.md b/packages/tsconfig-reference/copy/pt/options/declaration.md deleted file mode 100644 index 443c6ac44286..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Declarações" -oneline: "Emite arquivos d.ts para os arquivos referenciados no projeto" ---- - -Gere arquivos `.d.ts` para cada arquivo TypeScript ou JavaScript dentro do seu projeto. -Esses arquivos `.d.ts` são arquivos de definição de tipo que descrevem a API externa do seu módulo. -Com arquivos `.d.ts`, ferramentas como o TypeScript podem fornecer intellisense e tipos mais precisos para código que ainda não foi digitado. - -Quando a opção `declaration` é definida como `true`, executando o compilador com este código TypeScript: - -```ts twoslash -export let olaMundo = "olá!"; -``` - -Vai gerar um arquivo `index` como este: - -```ts twoslash -// @showEmit -export let olaMundo = "olá!"; -``` - -Com um outro arquivo correspondente `olaMundo.d.ts`: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let olaMundo = "olá!"; -``` - -Ao trabalhar com arquivos `.d.ts` para arquivos JavaScript, você pode usar [`emitDeclarationOnly`](#emitDeclarationOnly) ou usar [`outDir`](#outDir) para garantir que os arquivos JavaScript não sejam sobrescritos. diff --git a/packages/tsconfig-reference/copy/pt/options/declarationDir.md b/packages/tsconfig-reference/copy/pt/options/declarationDir.md deleted file mode 100644 index 1839f9efae03..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/declarationDir.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Diretório de declarações" -oneline: "Define o diretório raiz para os arquivos .d.ts" ---- - -Oferece uma maneira de configurar o diretório raiz para onde os arquivos de declaração são emitidos. - -``` -exemplo -├── index.ts -├── package.json -└── tsconfig.json -``` - -com este `tsconfig.json`: - -```json tsconfig -{ - "compilerOptions": { - "declaration": true, - "declarationDir": "./tipos" - } -} -``` - -Colocaria o `d.ts` para o `index.ts` em uma pasta`tipos`: - -``` -exemplo -├── index.js -├── index.ts -├── package.json -├── tsconfig.json -└── tipos - └── index.d.ts -``` diff --git a/packages/tsconfig-reference/copy/pt/options/declarationMap.md b/packages/tsconfig-reference/copy/pt/options/declarationMap.md deleted file mode 100644 index 290f9eb8d41f..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/declarationMap.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Mapa de declarações" -oneline: "Cria arquivos sourcemap para os arquivos .d.ts" ---- - -Gera um sourcemap para arquivos `.d.ts`, que são mapeados de volta para o arquivo original `.ts`. -Isso permitirá que editores como o VS Code acessem o arquivo `.ts` original ao usar recursos como _Ir para definição_. - -Você deve fortemente considerar ativar essa opção se estiver usando referências de projeto. diff --git a/packages/tsconfig-reference/copy/pt/options/diagnostics.md b/packages/tsconfig-reference/copy/pt/options/diagnostics.md deleted file mode 100644 index 557777537797..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/diagnostics.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Diagnósticos" -oneline: "Gera mais informações de diagnóstico após a compilação" ---- - -Usado para gerar informações de diagnóstico para depuração. Este comando é um subconjunto de [`extendedDiagnostics`](#extendedDiagnostics), apenas com resultados voltados para o usuário e mais fáceis de interpretar. - -Se você tiver sido solicitado por um engenheiro do compilador do TypeScript para fornecer os resultados usando esse sinalizador em uma compilação, não há mal algum em usar [`--extendedDiagnostics`](#extendedDiagnostics) durante o processo. diff --git a/packages/tsconfig-reference/copy/pt/options/disableReferencedProjectLoad.md b/packages/tsconfig-reference/copy/pt/options/disableReferencedProjectLoad.md deleted file mode 100644 index 6eae335f401d..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/disableReferencedProjectLoad.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Desabilitar o carregamento do projeto referenciado" -oneline: "Reduz o número de projetos carregados automaticamente pelo TypeScript" ---- - -Em aplicações Typescript de multi projetos, o TypeScript irá carregar todos os projetos disponíveis na memória com o objetivo de -fornecer resultados mais precisos para as respostas do editor que requerem um gráfico de conhecimento completo como 'Localizar todas as referências'. - -Se o seu projeto for grande, você pode utilizar a _flag_ `disableReferencedProjectLoad` para desabilitar o carregamento automático de todos os projetos. Com isso, os projetos serão carregados dinamicamente quando você abrir os arquivos através do seu editor. diff --git a/packages/tsconfig-reference/copy/pt/options/disableSizeLimit.md b/packages/tsconfig-reference/copy/pt/options/disableSizeLimit.md deleted file mode 100644 index 319e3b3ce2a4..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/disableSizeLimit.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Desativar limite de tamanho" -oneline: "Remove a limitação de memória no servidor de linguagem do TypeScript" ---- - -Para evitar um possível problema de inchaço da memória ao trabalhar com projetos JavaScript muito grandes, há um limite superior para a quantidade de memória que o TypeScript alocará. Ativar este sinalizador removerá o limite. diff --git a/packages/tsconfig-reference/copy/pt/options/disableSolutionSearching.md b/packages/tsconfig-reference/copy/pt/options/disableSolutionSearching.md deleted file mode 100644 index 05b1ee6ef918..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/disableSolutionSearching.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Desabilitar Busca por Soluções" -oneline: "Remove um projeto da checagem de referências multi-projeto" ---- - -Ao trabalhar com [projetos TypeScript compostos](/docs/handbook/project-reference.html), esta opção fornece uma maneira de declarar que você não deseja que um projeto seja incluído ao usar recursos como _encontrar todas as referências_ ou _pular para definição_ em um editor. - -Esse sinalizador é algo que você pode usar para aumentar a capacidade de resposta em grandes projetos compostos. diff --git a/packages/tsconfig-reference/copy/pt/options/disableSourceOfProjectReferenceRedirect.md b/packages/tsconfig-reference/copy/pt/options/disableSourceOfProjectReferenceRedirect.md deleted file mode 100644 index 44a7b11ffe34..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/disableSourceOfProjectReferenceRedirect.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Desabilitar Redirecionamento de Referências no Projeto de Origem" -oneline: "Usar arquivos .d.ts como a fonte de verdade para todas as ferramentas dentro do escopo de projetos compostos" ---- - -Ao trabalhar com [projetos TypeScript compostos](/docs/handbook/project-reference.html), esta opção fornece uma maneira de voltar [ao comportamento pré-3.7](/docs/handbook/release-notes/typescript-3-7.html#build-free-edition-with-project-reference) em que os arquivos d.ts eram usados como limites entre os módulos. - -Na versão 3.7, a fonte da verdade são agora os arquivos TypeScript. diff --git a/packages/tsconfig-reference/copy/pt/options/downlevelIteration.md b/packages/tsconfig-reference/copy/pt/options/downlevelIteration.md deleted file mode 100644 index dce9ac67465a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/downlevelIteration.md +++ /dev/null @@ -1,73 +0,0 @@ ---- -display: "Iteração Downlevel" -oneline: "Emite JavaScript mais compatível, porém mais verboso, para objetos iterativos" ---- - -Downleveling é o termo do TypeScript para transpilar para uma versão mais antiga do JavaScript. -Esse sinalizador permite que, em runtimes mais antigos do JavaScript, haja o suporte a uma implementação mais precisa de como o JavaScript moderno interage com novos conceitos. - -O ECMAScript 6 adicionou várias novas primitivas de iteração: o loop `for / of` (`for (el of arr)`), operador de spread (`[a, ...b]`), spread de argumento (`fn (... args)`) e o [`Symbol.iterator`](https://medium.com/trainingcenter/iterators-em-javascript-880adef14495). `--downlevelIteration` permite que essas primitivas de iteração sejam usadas com mais precisão nos ambientes ES5 se uma implementação do [`Symbol.iterator`](https://medium.com/trainingcenter/iterators-em-javascript-880adef14495) estiver presente. - -#### Exemplo: Efeitos no `for / of` - -Sem a flag `downlevelIteration` ativa, um loop `for / of` em qualquer objeto sofre um downlevel para um loop `for` tradicional: - -```ts twoslash -// @target: ES5 -// @showEmit -const str = "Olá!"; -for (const s of str) { - console.log(s); -} -``` - -Isso geralmente é o que as pessoas esperam, mas não é 100% compatível com o comportamento do ECMAScript 6. -Certas strings, como emoji (😜), têm um `.length` de 2 (ou até mais!), Mas devem iterar como 1 unidade em um loop `for-of`. -Consulte [esta postagem no blog de Jonathan New](https://blog.jonnew.com/posts/poo-dot-length-equals-two) para obter uma explicação mais detalhada. - -Quando o `downlevelIteration` estiver ativado, o TypeScript usará uma função auxiliar que verifica a implementação do `Symbol.iterator` (nativo ou polyfill). Se essa implementação estiver ausente, ela retornará à iteração baseada em índice. - -```ts twoslash -// @target: ES5 -// @downlevelIteration -// @showEmit -const str = "Olá!"; -for (const s of str) { - console.log(s); -} -``` - -> > **Nota:** ativar o `downlevelIteration` não melhora a compatibilidade se o `Symbol.iterator` não estiver presente no runtime. - -#### Exemplo: Efeitos em Spreads de Arrays - -Isso é um operador spread em um array: - -```js -// Cria um novo array onde os elementos são: 1 seguido por todos os elementos do arr2 -const arr = [1, ...arr2]; -``` - -Baseado nas descrições, parece fácil fazer um downlevel para ES6: - -```js -// Mesma coisa, certo? -const arr = [1].concat(arr2); -``` - -No entanto, isso é claramente diferente em certos casos bem raros. -Por exemplo, se o array tiver um "buraco" no meio, o índice faltante vai criar uma propriedade _própria_ quando sofrer o spread, mas isso não acontece quando usamos `concat`: - -```js -// Fazemos um array onde temos o elemento do índice '1' faltando -let faltando = [0, , 1]; -let spread = [...faltando]; -let concatenado = [].concat(faltando); - -// true -"1" in spread; -// false -"1" in concatenado; -``` - -Assim como `for / of`, `downlevelIteration` vai usar o `Symbol.iterator` (se presente) para emular de forma mais precisa o comportamento do ES 6. diff --git a/packages/tsconfig-reference/copy/pt/options/emitBOM.md b/packages/tsconfig-reference/copy/pt/options/emitBOM.md deleted file mode 100644 index 39f77e844478..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/emitBOM.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Emitir BOM" -oneline: "Inclui um byte order mark nos arquivos de saída" ---- - -Controla se o TypeScript emitirá uma [BOM (byte order mark)](https://pt.wikipedia.org/wiki/Marca_de_ordem_de_byte) ao gravar arquivos de saída. -Alguns runtimes exigem uma BOM para interpretar corretamente os arquivos JavaScript; outros exigem que ele não esteja presente. -O valor padrão de `false` é geralmente melhor, a menos que você tenha um motivo para alterá-lo. diff --git a/packages/tsconfig-reference/copy/pt/options/emitDeclarationOnly.md b/packages/tsconfig-reference/copy/pt/options/emitDeclarationOnly.md deleted file mode 100644 index c4f9a147a95b..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/emitDeclarationOnly.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Emitir Somente Declarações" -oneline: "Somente emitir arquivos .d.ts e não emitir arquivos .js" ---- - -_Só_ emite arquivos `.d.ts`; não emite arquivos `.js`. - -Essa configuração é útil em dois casos: - -- Você está usando um transpilador diferente do TypeScript para gerar seu JavaScript. -- Você está usando o TypeScript para gerar apenas arquivos `d.ts` para seus consumidores. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/pt/options/emitDecoratorMetadata.md b/packages/tsconfig-reference/copy/pt/options/emitDecoratorMetadata.md deleted file mode 100644 index 681974cd5ba7..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/emitDecoratorMetadata.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Emitir Metadados de Decorators" -oneline: "Adiciona metadados de tipo adicionais a decorators no código emitido" ---- - -Ativa o suporte experimental para a emissão de metadados de tipo para decorators que funcionam com o módulo [`reflect-metadata`](https://www.npmjs.com/package/reflect-metadata). - -Por exemplo, aqui está o JavaScript - -```ts twoslash -// @experimentalDecorators -function LogarMetodo(alvo: any, chaveDaPropriedade: string | symbol, descritor: PropertyDescriptor) { - console.log(alvo); - console.log(chaveDaPropriedade); - console.log(descritor); -} - -class Demo { - @LogarMetodo - public foo(bar: number) { - // não faz nada - } -} - -const demo = new Demo(); -``` - -Com `emitDecoratorMetadata` não ativo (padrão): - -```ts twoslash -// @experimentalDecorators -// @showEmit -function LogarMetodo(alvo: any, chaveDaPropriedade: string | symbol, descritor: PropertyDescriptor) { - console.log(alvo); - console.log(chaveDaPropriedade); - console.log(descritor); -} - -class Demo { - @LogarMetodo - public foo(bar: number) { - // não faz nada - } -} - -const demo = new Demo(); -``` - -Com `emitDecoratorMetadata` em true: - -```ts twoslash -// @experimentalDecorators -// @showEmit -// @emitDecoratorMetadata -function LogarMetodo(alvo: any, chaveDaPropriedade: string | symbol, descritor: PropertyDescriptor) { - console.log(alvo); - console.log(chaveDaPropriedade); - console.log(descritor); -} - -class Demo { - @LogarMetodo - public foo(bar: number) { - // não faz nada - } -} - -const demo = new Demo(); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/esModuleInterop.md b/packages/tsconfig-reference/copy/pt/options/esModuleInterop.md deleted file mode 100644 index b179b48217e2..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/esModuleInterop.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -display: "Interoperabilidade de Módulo ES" -oneline: "Emite JS adicional para dar suporte ao importar módulos commonjs" ---- - -Permite interoperabilidade de emição entre Módulos CommonJS e ES através da criação de namespaces para todas as importações. - -TypeScript adere ao padrão EcmaScript para módulos, o que significa que um arquivo com exportações teria que especificamente incluir uma exportação `default` para dar suporte à sintaxes como `import React from "react"`. -Este padrão de exportação é raro em módulos para CommonJS. Por exemplo, sem `esModuleInterop` como true: - -```ts twoslash -// @checkJs -// @allowJs -// @allowSyntheticDefaultImports -// @filename: utilitarios.js -// @noImplicitAny: false -const obterTamanhoDaString = (str) => str.length; - -module.exports = { - obterTamanhoDaString, -}; - -// @filename: index.ts -import utils from "./utilitarios"; - -const count = utils.obterTamanhoDaString("Checagem JS"); -``` - -Isto não vai funcionar porque não existe um objeto `default` o qual você pode importar. Apesar de parecer que deveria. -Por conveniência, transpiladores como Babel vão criar um default automaticamente se não encontrarem um existente. Fazendo com que o módulo se pareça um pouco mais com isto: - -```js -// @filename: utilitarios.js -const obterTamanhoDaString = (str) => str.length; -const todasAsFuncoes = { - obterTamanhoDaString, -}; - -module.exports = todasAsFuncoes; -``` - -Ativando esta flag no compilador, a opção [`allowSyntheticDefaultImports`](#allowSyntheticDefaultImports) também será habilitada. diff --git a/packages/tsconfig-reference/copy/pt/options/exclude.md b/packages/tsconfig-reference/copy/pt/options/exclude.md deleted file mode 100644 index 198b353405a0..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/exclude.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Excluir" -oneline: "Arquivos ou padrões a serem ignorados pela opção de incluir" ---- - -Especifica uma array de nomes de arquivos ou padrões que devem ser ignorando durante o `include`. - -**Importante**: `exclude` altera _apenas_ os arquivos que estão nos resultados da configuração `include`. -Um arquivo marcado como `exclude` ainda pode fazer parte do seu código através de uma instrução `import`, uma inclusão de `types`, uma diretiva `/// - -``` -. -├── scripts ⨯ -│ ├── lint.ts ⨯ -│ ├── update_deps.ts ⨯ -│ └── utils.ts ⨯ -├── src ✓ -│ ├── client ✓ -│ │ ├── index.ts ✓ -│ │ └── utils.ts ✓ -│ ├── server ✓ -│ │ └── index.ts ✓ -├── tests ✓ -│ ├── app.test.ts ✓ -│ ├── utils.ts ✓ -│ └── tests.d.ts ✓ -├── package.json -├── tsconfig.json -└── yarn.lock -``` - -`include` e `exclude` suporta caracteres curinga para criar padrões globais: - -- `*` corresponde a zero ou mais caracteres (excluindo separadores de diretório) -- `?` corresponde a qualquer caractere (excluindo separadores de diretório) -- `**/` corresponde a qualquer diretório aninhado a qualquer nível - -Se um padrão global não incluir uma extensão de arquivo, apenas os arquivos com extensões compatíveis serão incluídos (por exemplo: `.ts`, `.tsx`, e `.d.ts` por padrão, com `.js` e `.jsx` se `allowJs` for definido como verdadeiro). diff --git a/packages/tsconfig-reference/copy/pt/options/incremental.md b/packages/tsconfig-reference/copy/pt/options/incremental.md deleted file mode 100644 index 5952291fdee9..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/incremental.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Incremental" -oneline: "Salve arquivos .tsbuildinfo para permitir a compilação incremental de projetos" ---- - -Diz ao TypeScript para salvar informações sobre o grafo do projeto da última compilação em arquivos armazenados no disco. -Este cria uma série de arquivos `.tsbuildinfo` na mesma pasta de sua saída de compilação. Eles não são usados por seu JavaScript em tempo de execução e pode ser excluído com segurança. Você pode ler mais sobre a bandeira no [3.4 notas de lançamento](/docs/handbook/release-notes/typescript-3-4.html#faster-subsequent-builds-with-the---incremental-flag). - -Para controlar em quais pastas você deseja que os arquivos sejam construídos, use a opção de configuração [`tsBuildInfoFile`](#tsBuildInfoFile). diff --git a/packages/tsconfig-reference/copy/pt/options/inlineSourceMap.md b/packages/tsconfig-reference/copy/pt/options/inlineSourceMap.md deleted file mode 100644 index cdd4a6c0d2ed..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/inlineSourceMap.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -display: "Mapa de origem embutido" -oneline: "Incluir arquivos de mapa de origem dentro do JavaScript emitido" ---- - -Quando definido, em vez de escrever um arquivo `.js.map` para fornecer mapas de origem, o TypeScript irá embutir o conteúdo do mapa de origem nos arquivos`.js`. -Embora isso resulte em arquivos JS maiores, pode ser conveniente em alguns cenários. -Por exemplo, você pode querer depurar arquivos JS em um servidor web que não permite que arquivos `.map` sejam servidos. - -Mutuamente exclusivo com [`sourceMap`](#sourceMap). - -Por exemplo, com este TypeScript: - -```ts -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Converte para este JavaScript: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Em seguida, habilite a construção com `inlineSourceMap` habilitado, há um comentário na parte inferior do arquivo que inclui um mapa de origem para o arquivo. - -```ts twoslash -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/inlineSources.md b/packages/tsconfig-reference/copy/pt/options/inlineSources.md deleted file mode 100644 index d8fcce830cdd..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/inlineSources.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -display: "Origens Embutidas" -oneline: "Incluir arquivos de mapa de origem dentro do JavaScript emitido" ---- - -Quando definido o TypeScript incluirá o conteúdo original do arquivo `.ts` como uma string incorporada no mapa de origem. -Isso geralmente é util nos mesmos casos que `inlineSourceMap`. - -Requer `sourceMap` ou` inlineSourceMap` para ser definido. - -Por exemplo, com este TypeScript: - -```ts twoslash -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Por padrão, converte para este JavaScript: - -```ts twoslash -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` - -Em seguida, habilite a compilação com `inlineSources` e` inlineSourceMap` habilitados, há um comentário na parte inferior do arquivo que inclui -um mapa de origem para o arquivo. -Observe que o final é diferente do exemplo em [`inlineSourceMap`](#inlineSourceMap) porque o mapa-fonte agora contém o código-fonte original também. - -```ts twoslash -// @inlineSources -// @inlineSourceMap -// @showEmit -const helloWorld = "hi"; -console.log(helloWorld); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/isolatedModules.md b/packages/tsconfig-reference/copy/pt/options/isolatedModules.md deleted file mode 100644 index b4e984adb85d..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/isolatedModules.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -display: "Módulos Isolados" -oneline: "Certifique-se de que cada arquivo pode ser transpilado com segurança, sem depender de outras importações" ---- - -Embora você possa usar o TypeScript para produzir código JavaScript a partir do código TypeScript, também é comum usar outros transpilers como [Babel](https://babeljs.io) para fazer isso. -No entanto, outros transpilers operam apenas em um único arquivo por vez, o que significa que eles não podem aplicar transformações de código que dependem da compreensão de todo o sistema de tipos. -Esta restrição também se aplica à API `ts.transpileModule` do TypeScript que é usada por algumas ferramentas de construção. - -Essas limitações podem causar problemas de tempo de execução com alguns recursos do TypeScript, como `const enum`s e`namespace`s. -Definir o sinalizador `isolatedModules` diz ao TypeScript para avisá-lo se você escrever certo código que não pode ser interpretado corretamente por um processo de transpilação de arquivo único. - -Isso não altera o comportamento do seu código ou, de outra forma, altera o comportamento do processo de verificação e emissão do TypeScript - -Alguns exemplos de código que não funcionam quando `isolatedModules` está habilitado. - -#### Exportações de identificadores sem valor - -No TypeScript, você pode importar um _type_ e depois exportá-lo: - -```ts twoslash -// @noErrors -import { someType, someFunction } from "someModule"; - -someFunction(); - -export { someType, someFunction }; -``` - -Como não há valor para `someType`, o`export` emitido não tentará exportá-lo (isso seria um erro de tempo de execução em JavaScript): - -```js -export { someFunction }; -``` - -Transpiladores de arquivo único não sabem se `someType` produz um valor ou não, então é um erro exportar um nome que se refere apenas a um tipo. - -#### Arquivos Non-Module - -Se `isolatedModules` estiver definido, todos os arquivos de implementação devem ser _modules_ (o que significa que tem alguma forma de`import` / `export`). Ocorre um erro se algum arquivo não for um módulo: - -```ts twoslash -// @errors: 1208 -// @isolatedModules -function fn() {} -``` - -Esta restrição não se aplica a arquivos `.d.ts` - -#### Referências a membros `const enum` - -No TypeScript, quando você faz referência a um membro `const enum`, a referência é substituída por seu valor real no JavaScript emitido. Alterando este TypeScript: - -```ts twoslash -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -Para este JavaScript: - -```ts twoslash -// @showEmit -// @removeComments -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -Sem o conhecimento dos valores desses membros, outros transpiladores não podem substituir as referências a `Number`, o que seria um erro de tempo de execução se deixado sozinho (uma vez que não há objeto `Numbers` em tempo de execução). -Por causa disso, quando `isolatedModules` é definido, é um erro fazer referência a um membro ambiente `const enum`. diff --git a/packages/tsconfig-reference/copy/pt/options/jsx.md b/packages/tsconfig-reference/copy/pt/options/jsx.md deleted file mode 100644 index 8bceae97232a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/jsx.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "JSX" -oneline: "Controla como o JSX é emitido" ---- - -Define como a sintaxe JSX é gerada em um arquivo JavaScript. -Isso afeta apenas a saída JS para arquivos que terminam em `.tsx`. - -- `preserve`: Gera um arquivo `.jsx` sem alterar o JSX -- `react`: Converte JSX em equivalente `React.createElement` e gera arquivo`.js` -- `react-native`: Gera arquivo `.js` sem alterar o JSX diff --git a/packages/tsconfig-reference/copy/pt/options/jsxFactory.md b/packages/tsconfig-reference/copy/pt/options/jsxFactory.md deleted file mode 100644 index b1dcd0c9dc92..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/jsxFactory.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Fabrica JSX" -oneline: "Controle a função emitida pelo JSX" ---- - -Altera a função chamada em arquivos `.js` ao compilar elementos JSX. -A alteração mais comum é usar `"h"` ou `"preact.h"` ao invés do padrão `"React.createElement"` se estiver usando `preact`. - -Esta opção pode ser usada por arquivo muito semelhante a [directiva `/** @jsx h */` do Babel](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#custom). diff --git a/packages/tsconfig-reference/copy/pt/options/jsxFragmentFactory.md b/packages/tsconfig-reference/copy/pt/options/jsxFragmentFactory.md deleted file mode 100644 index 81d80ba9a60c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/jsxFragmentFactory.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -display: "Fábrica de fragmentos JSX" -oneline: "Faz alguma coisa" ---- - -Especifique a função que será a fábrica de fragmentos JSX para ser acionada ao usar o react JSX com a opção do compilador `jsxFactory` especificada, por exemplo `Fragment`. - -Esta opção pode ser usada por arquivo, muito semelhante a [diretiva `/** @jsxFrag h */` do Babel](https://babeljs.io/docs/en/babel-plugin-transform-react-jsx#fragments).). - -Por exemplo, com esse TSConfig: - -```json -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react", - "jsxFactory": "h", - "jsxFragmentFactory": "Fragment" - } -} -``` - -Temos esse arquivo TSX: - -```tsx -import { h, Fragment } from "preact"; - -const OlaMundo = () => ( - <> -
Olá
- -); -``` - -Que seria equivalente, a esse arquivo TSX: - -```tsx twoslash -// @showEmit -// @showEmittedFile: index.js -// @jsxFactory: h -// @jsxFragmentFactory: Fragment -// @noErrors -// @target: esnext -// @module: commonjs - -import { h, Fragment } from "preact"; - -const OlaMundo = () => ( - <> -
Olá
- -); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/jsxImportSource.md b/packages/tsconfig-reference/copy/pt/options/jsxImportSource.md deleted file mode 100644 index 92d55304cd0d..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/jsxImportSource.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -display: "Fonte de importação jsx" -oneline: "O especificador de módulo para importar as funções factory jsx" ---- - -Declara o especificador de módulo a ser usado para importar as funções factory `jsx` e `jsxs` ao usar [`jsx`](#jsx) como `"react-jsx"` ou `"react-jsxdev"` que foi introduzido no TypeScript 4.1. - -Com [React 17](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html), a biblioteca suporta uma nova forma de transformação JSX através de uma importação separada. - -Por exemplo com este código: - -```tsx -import React from "react"; - -function App() { - return

Olá Mundo

; -} -``` - -Usando este TSConfig: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react-jsx" - } -} -``` - -O JavaScript gerado pelo TypeScript é: - -```tsx twoslash -// @showEmit -// @noErrors -// @jsx: react-jsx -// @module: commonjs -// @target: esnext -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -import React from "react"; - -function App() { - return

Hello World

; -} -``` - -Por exemplo se você quiser usar `"jsxImportSource": "preact"`, você precisa de um tsconfig como: - -```json tsconfig -{ - "compilerOptions": { - "target": "esnext", - "module": "commonjs", - "jsx": "react-jsx", - "jsxImportSource": "preact", - "types": ["preact"] - } -} -``` - -Que gera um código como: - -```tsx twoslash -// @showEmit -// @jsxImportSource: preact -// @types: preact -// @jsx: react-jsx -// @target: esnext -// @module: commonjs -// @noErrors - -export function App() { - return

Olá Mundo

; -} -``` - -Ao invés disso, voce pode usar um pragma por arquivo para definir esta opção, por exemplo: - -```tsx -/** @jsxImportSource preact */ - -export function App() { - return

Olá Mundo

; -} -``` - -Adicionaria `preact/jsx-runtime` como uma importação para a factory `_jsx` - -_Nota:_ Para que isso funcione como você esperava, seu arquivo `tsx` deve incluir um `export` ou `import` para que seja considerado um módulo. diff --git a/packages/tsconfig-reference/copy/pt/options/keyofStringsOnly.md b/packages/tsconfig-reference/copy/pt/options/keyofStringsOnly.md deleted file mode 100644 index 138b0d9fc5b5..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/keyofStringsOnly.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Somente Strings em KeyOf" -oneline: "Faça com que keyof retorne apenas strings em vez de strings ou números" ---- - -Este sinalizador muda o operador do tipo `keyof` para retornar` string` em vez de `string | number` quando aplicado a um tipo com uma assinatura de índice de string. - -Este sinalizador é usado para ajudar as pessoas a evitar esse comportamento de [before TypeScript 2.9's release](/docs/handbook/release-notes/typescript-2-9.html#support-number-and-symbol-named-properties-with-keyof-and-mapped-types). diff --git a/packages/tsconfig-reference/copy/pt/options/lib.md b/packages/tsconfig-reference/copy/pt/options/lib.md deleted file mode 100644 index 6ec58fb21b7d..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/lib.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "Biblioteca" -oneline: "Inclua definições de tipo que você sabe que estão disponíveis em seu tempo de execução de JavaScript" ---- - -O TypeScript inclui um conjunto padrão de definições de tipo para APIs JS embutidas (como `Math`), bem como definições de tipo para coisas encontradas em ambientes de navegador (como `document`). -TypeScript também inclui APIs para recursos JS mais recentes que correspondem ao `target` que você especifica; por exemplo, a definição para `Map` está disponível se `target` for `ES6` ou mais recente. - -Você pode querer alterá-los por alguns motivos: - -- Seu programa não roda em um navegador, então você não quer as definições do tipo `"dom"` -- Sua plataforma de tempo de execução fornece certos objetos de API JavaScript (talvez por meio de polyfills), mas ainda não suporta a sintaxe completa de uma determinada versão ECMAScript -- Você tem polyfills ou implementações nativas para alguns, mas não todos, de uma versão ECMAScript de nível superior - -### Bibliotecas de alto nível - -| Name | Contents | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ES5` | Definições básicas para todas as funcionalidades ES3 e ES5 | -| `ES2015` | APIs adicionais disponíveis no ES2015 (também conhecido como ES6) - `array.find`, `Promise`, `Proxy`, `Symbol`, `Map`, `Set`, `Reflect`, etc. | -| `ES6` | Alias for "ES2015" | -| `ES2016` | APIs adicionais disponíveis no ES2016 - `array.include`, etc. | -| `ES7` | Alias for "ES2016" | -| `ES2017` | APIs adicionais disponíveis no ES2017 - `Object.entries`, `Object.values`, `Atomics`, `SharedArrayBuffer`, `date.formatToParts`, typed arrays, etc. | -| `ES2018` | APIs adicionais disponíveis no ES2018 - `async` iterables, `promise.finally`, `Intl.PluralRules`, `rexexp.groups`, etc. | -| `ES2019` | APIs adicionais disponíveis no ES2019 - `array.flat`,` array.flatMap`, `Object.fromEntries`, `string.trimStart`, `string.trimEnd`, etc. | -| `ES2020` | APIs adicionais disponíveis no ES2020 - `string.matchAll`, etc. | -| `ESNext` | APIs adicionais disponíveis no ESNext - Isso muda conforme a especificação do JavaScript evolui | -| `DOM` | [DOM](https://developer.mozilla.org/docs/Glossary/DOM) definitions - `window`, `document`, etc. | -| `WebWorker` | APIs disponíveis em [Web Worker](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Using_web_workers) contexts | -| `ScriptHost` | APIs para o [Windows Script Hosting System](https://wikipedia.org/wiki/Windows_Script_Host) | - -### Individual library components - -| Name | -| ------------------------- | -| `DOM.Iterable` | -| `ES2015.Core` | -| `ES2015.Collection` | -| `ES2015.Generator` | -| `ES2015.Iterable` | -| `ES2015.Promise` | -| `ES2015.Proxy` | -| `ES2015.Reflect` | -| `ES2015.Symbol` | -| `ES2015.Symbol.WellKnown` | -| `ES2016.Array.Include` | -| `ES2017.object` | -| `ES2017.Intl` | -| `ES2017.SharedMemory` | -| `ES2017.String` | -| `ES2017.TypedArrays` | -| `ES2018.Intl` | -| `ES2018.Promise` | -| `ES2018.RegExp` | -| `ES2019.Array` | -| `ES2019.Full` | -| `ES2019.Object` | -| `ES2019.String` | -| `ES2019.Symbol` | -| `ES2020.Full` | -| `ES2020.String` | -| `ES2020.Symbol.wellknown` | -| `ESNext.AsyncIterable` | -| `ESNext.Array` | -| `ESNext.Intl` | -| `ESNext.Symbol` | - -Esta lista pode estar desatualizada, você pode ver a lista completa no [TypeScript source code](https://github.com/microsoft/TypeScript/tree/master/lib). diff --git a/packages/tsconfig-reference/copy/pt/options/listEmittedFiles.md b/packages/tsconfig-reference/copy/pt/options/listEmittedFiles.md deleted file mode 100644 index 4f01daf4a3b2..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/listEmittedFiles.md +++ /dev/null @@ -1,42 +0,0 @@ ---- -display: "Listar arquivos emitidos" -oneline: "Imprime os nomes dos arquivos emitidos após uma compilação" ---- - -Imprime nomes de arquivos gerados parte da compilação para o terminal. - -Este sinalizador é útil em dois casos: - -- Você deseja transpilar o TypeScript como parte de uma cadeia de construção no terminal onde os nomes dos arquivos são processados no próximo comando. -- Você não tem certeza de que o TypeScript incluiu um arquivo que você esperava, como parte da depuração das [configurações de inclusão de arquivo](#Project_Files_0). - -Por exemplo: - -``` -exemplo -├── index.ts -├── package.json -└── tsconfig.json -``` - -Com: - -```json -{ - "compilerOptions": { - "declaration": true, - "listFiles": true - } -} -``` - -Ecoaria caminhos como: - -``` -$ npm run tsc - -path/to/example/index.js -path/to/example/index.d.ts -``` - -Normalmente, o TypeScript retornaria silenciosamente em caso de sucesso. diff --git a/packages/tsconfig-reference/copy/pt/options/listFiles.md b/packages/tsconfig-reference/copy/pt/options/listFiles.md deleted file mode 100644 index f75f14b3b206..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/listFiles.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -display: "Lista de arquivos" -oneline: "Imprime todos os arquivos lidos durante a compilação" ---- - -Imprime nomes de arquivos que fazem parte da compilação. Isso é útil quando você não tem certeza de que o TypeScript tem -incluiu um arquivo que você esperava. - -Por exemplo: - -``` -exemplo -├── index.ts -├── package.json -└── tsconfig.json -``` - -Com: - -```json -{ - "compilerOptions": { - "listFiles": true - } -} -``` - -Ecoaria caminhos como:: - -``` -$ npm run tsc -path/to/example/node_modules/typescript/lib/lib.d.ts -path/to/example/node_modules/typescript/lib/lib.es5.d.ts -path/to/example/node_modules/typescript/lib/lib.dom.d.ts -path/to/example/node_modules/typescript/lib/lib.webworker.importscripts.d.ts -path/to/example/node_modules/typescript/lib/lib.scripthost.d.ts -path/to/example/index.ts -``` diff --git a/packages/tsconfig-reference/copy/pt/options/locale.md b/packages/tsconfig-reference/copy/pt/options/locale.md deleted file mode 100644 index f17f30608468..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/locale.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Locale" -oneline: "Defina o idioma da saída tsc" ---- - -TypeScript suporta uma série de linguagens, no entanto, isso não pode ser definido por meio do `tsconfig.json`, apenas -através do ambiente host ou da bandeira CLI `--locale`. Por exemplo. `tsc --locale ru`. - -### Localidades com suporte a partir de TypeScript 3.7 - -| Name | Locale | -| --------------------- | ------- | -| Brazilian Portuguese | `pr-BR` | -| Chinese (Simplified) | `zh-TW` | -| Chinese (Traditional) | `zh-CN` | -| Czech | `cs-CZ` | -| English (US) | `en-US` | -| French | `fr-FR` | -| German | `de-DE` | -| Italian | `it-IT` | -| Japanese | `ja-JP` | -| Korean | `ko-KR` | -| Polish | `pl-PL` | -| Russian | `ru-RU` | -| Spanish | `es-ES` | -| Turkish | `tr-TR` | diff --git a/packages/tsconfig-reference/copy/pt/options/mapRoot.md b/packages/tsconfig-reference/copy/pt/options/mapRoot.md deleted file mode 100644 index c814a99b2f8b..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/mapRoot.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "Raiz do mapa" -oneline: "Defina uma raiz externa para mapas de origem" ---- - -Especifique o local onde o depurador deve localizar os arquivos de mapa em vez dos locais gerados. -Esta string é tratada literalmente dentro do source-map, por exemplo: - -```json -{ - "compilerOptions": { - "sourceMap": true, - "mapRoot": "https://my-website.com/debug/sourcemaps/" - } -} -``` - -Declararia que `index.js` terá mapas de origem em `https://my-website.com/debug/sourcemaps/index.js.map`. diff --git a/packages/tsconfig-reference/copy/pt/options/maxNodeModuleJsDepth.md b/packages/tsconfig-reference/copy/pt/options/maxNodeModuleJsDepth.md deleted file mode 100644 index 6ffa0845cc6c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/maxNodeModuleJsDepth.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Profundidade JS do módulo de nó máximo" -oneline: "Quão profundo o TypeScript deve executar a verificação de tipo em node_modules" ---- - -A profundidade máxima de dependência para pesquisar em `node_modules` e carregar arquivos JavaScript. - -Este sinalizador só pode ser usado quando [`allowJs`](#allowJs) está habilitado, e é usado se você quiser ter tipos de inferência TypeScript para todo o JavaScript dentro de seu `node_modules`. - -Idealmente, isso deve ficar em 0 (o padrão), e os arquivos `d.ts` devem ser usados para definir explicitamente a forma dos módulos. -No entanto, há casos em que você pode querer ativar isso em detrimento da velocidade e da precisão potencial. diff --git a/packages/tsconfig-reference/copy/pt/options/module.md b/packages/tsconfig-reference/copy/pt/options/module.md deleted file mode 100644 index d4bbb6625364..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/module.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -display: "Módulo" -oneline: "Define o sistema de módulo esperado para o seu tempo de execução" ---- - -Define o sistema de módulo para o programa. Consulte o capítulo Módulos do manual para obter mais informações. Você provavelmente deseja `"CommonJS"`. - -Aqui está um exemplo de saída para este arquivo: - -```ts twoslash -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `CommonJS` - -```ts twoslash -// @showEmit -// @module: commonjs -// @filename: constants.ts -export const valueOfPi = 3.142; -// @filename: index.ts -// ---cut--- -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `UMD` - -```ts twoslash -// @showEmit -// @module: umd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `AMD` - -```ts twoslash -// @showEmit -// @module: amd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `System` - -```ts twoslash -// @showEmit -// @module: system -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `ESNext` - -```ts twoslash -// @showEmit -// @module: esnext -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `ES2020` - -```ts twoslash -// @showEmit -// @module: es2020 -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -### `None` - -```ts twoslash -// @showEmit -// @module: none -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/moduleResolution.md b/packages/tsconfig-reference/copy/pt/options/moduleResolution.md deleted file mode 100644 index 47d159960d21..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/moduleResolution.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Resolução de Módulos" -oneline: "Permite a especificação de estratégias de resolução de módulos TypeScript 1.6" ---- - -Especifica a estratégia de resolução de módulos: `node` (Node.js) ou `classic` (utilizada no TypeScript antes da versão 1.6). -Você provavelmente não vai precisar utilizar `classic` em código mais recente. - -Veja a página de referência em: [Resolução de Módulos](/docs/handbook/module-resolution.html) diff --git a/packages/tsconfig-reference/copy/pt/options/newLine.md b/packages/tsconfig-reference/copy/pt/options/newLine.md deleted file mode 100644 index 38575bc214e3..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/newLine.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Nova linha" -oneline: "Defina o caractere de nova linha" ---- - -Especifique a sequência de fim de linha a ser usada ao emitir arquivos: 'CRLF' (dos) ou 'LF' (unix). diff --git a/packages/tsconfig-reference/copy/pt/options/noEmit.md b/packages/tsconfig-reference/copy/pt/options/noEmit.md deleted file mode 100644 index 6b7ece54d146..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noEmit.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Não Emita" -oneline: "Não emita arquivos de uma compilação" ---- - -Não emita arquivos de saída do compilador como código-fonte JavaScript, source-maps ou declarações. - -Isso abre espaço para outra ferramenta como [Babel](https://babeljs.io) ou [swc](https://github.com/swc-project/swc) para lidar com a conversão do arquivo TypeScript em um arquivo que pode ser executado dentro de um ambiente JavaScript. - -Você pode então usar o TypeScript como uma ferramenta para fornecer integração com o editor e como um verificador de tipo de código-fonte. diff --git a/packages/tsconfig-reference/copy/pt/options/noEmitHelpers.md b/packages/tsconfig-reference/copy/pt/options/noEmitHelpers.md deleted file mode 100644 index b0747c02217b..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noEmitHelpers.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -display: "No Emit Helpers" -oneline: "Suponha que auxiliares estejam disponíveis no tempo de execução global" ---- - -Em vez de importar auxiliares com [`importHelpers`](#importHelpers), você pode fornecer implementações no escopo global para os auxiliares que você usa e desligar completamente a emissão de funções auxiliares. - -Por exemplo, usar esta função `async` no ES5 requer uma função do tipo `await` e uma função do tipo `generator` para executar: - -```ts twoslash -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` - -O que cria bastante JavaScript: - -```ts twoslash -// @showEmit -// @target: ES5 -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` - -Que pode ser alternado com seus próprios globais por meio deste sinalizador: - -```ts twoslash -// @showEmit -// @target: ES5 -// @noEmitHelpers -const getAPI = async (url: string) => { - // Get API - return {}; -}; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noEmitOnError.md b/packages/tsconfig-reference/copy/pt/options/noEmitOnError.md deleted file mode 100644 index 29b908743aa6..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noEmitOnError.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "Não emitir em caso de erro" -oneline: "Só emite arquivos em uma compilação bem-sucedida" ---- - -Não emita arquivos de saída do compilador como código JavaScript, source-maps ou declarações se algum erro for relatado. - -O padrão é `false`, tornando mais fácil trabalhar com o TypeScript em um ambiente semelhante a um relógio, onde você pode ver os resultados das alterações em seu código em outro ambiente antes de garantir que todos os erros sejam resolvidos. diff --git a/packages/tsconfig-reference/copy/pt/options/noErrorTruncation.md b/packages/tsconfig-reference/copy/pt/options/noErrorTruncation.md deleted file mode 100644 index 73609e8f7e88..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noErrorTruncation.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Sem truncamento de erro" -oneline: "Não truncar mensagens de erro" ---- - -Não truncar mensagens de erro - -Com `false`, o padrão. - -```ts twoslash -// @errors: 2322 2454 -// @noErrorTruncation: false -var x: { - propertyWithAnExceedinglyLongName1: string; - propertyWithAnExceedinglyLongName2: string; - propertyWithAnExceedinglyLongName3: string; - propertyWithAnExceedinglyLongName4: string; - propertyWithAnExceedinglyLongName5: string; -}; - -// A representação da string do tipo 'x' deve ser truncada na mensagem de erro -var s: string = x; -``` - -Com `true` - -```ts twoslash -// @errors: 2322 2454 -// @noErrorTruncation: true -var x: { - propertyWithAnExceedinglyLongName1: string; - propertyWithAnExceedinglyLongName2: string; - propertyWithAnExceedinglyLongName3: string; - propertyWithAnExceedinglyLongName4: string; - propertyWithAnExceedinglyLongName5: string; -}; - -// A representação da string do tipo 'x' deve ser truncada na mensagem de erro -var s: string = x; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noFallthroughCasesInSwitch.md b/packages/tsconfig-reference/copy/pt/options/noFallthroughCasesInSwitch.md deleted file mode 100644 index b0a629057464..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noFallthroughCasesInSwitch.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -display: "Sem casos de Fallthrough no Switch" -oneline: "Relate erros para casos de falha nas instruções switch." ---- - -Reportar erros para casos de fallthrough em instruções switch. -Garante que qualquer caso não vazio dentro de uma instrução switch inclua `break` ou`return`. -Isso significa que você não enviará acidentalmente um bug de fallthrough. - -```ts twoslash -// @noFallthroughCasesInSwitch -// @errors: 7029 -const a: number = 6; - -switch (a) { - case 0: - console.log("par"); - case 1: - console.log("impar"); - break; -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noImplicitAny.md b/packages/tsconfig-reference/copy/pt/options/noImplicitAny.md deleted file mode 100644 index e3fd719b0716..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Sem 'Any' Implícito" -oneline: "Evita introduzir 'anys' dentro de sua base de código quando um tipo puder ser especificado" ---- - -Em alguns casos, onde nenhuma anotação de tipo está presente, o TypeScript retornará o tipo `any` para uma variável, quando não puder inferir o tipo. - -Isto pode fazer com que alguns erros sejam omitidos, por exemplo: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // Nenhum erro? - console.log(s.subtr(3)); -} -fn(42); -``` - -Ativando `noImplicitAny` no entanto, o TypeScript irá emitir um erro sempre que inferir `any`: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noImplicitReturns.md b/packages/tsconfig-reference/copy/pt/options/noImplicitReturns.md deleted file mode 100644 index 92d570a496ec..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noImplicitReturns.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Sem Retornos Implícitos" -oneline: "Garante que todos os caminhos de código de uma função tenham retorno" ---- - -Quando habilitado, o TypeScript verificará todos os caminhos de código em uma função para garantir que eles retornem um valor. - -```ts twoslash -// @errors: 2366 2322 -function procurarFabricanteDeFonesDeOuvido(cor: "azul" | "preto"): string { - if (cor === "azul") { - return "beats"; - } else { - "bose"; - } -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noImplicitThis.md b/packages/tsconfig-reference/copy/pt/options/noImplicitThis.md deleted file mode 100644 index 8ae0a858d8b0..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noImplicitThis.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -display: "Sem 'This' Implícito" -oneline: "Emite erro nas expressões 'this' com tipo 'any' implícito" ---- - -Emite erro nas expressões 'this' com tipo 'any' implícito. - -Por exemplo, a classe abaixo retorna uma função que tenta acessar `this.largura` e `this.area` – mas o contexto para `this` dentro da função dentro de `funcaoObterArea` não é a instância de `Retangulo`. - -```ts twoslash -// @errors: 2683 -class Retangulo { - largura: number; - altura: number; - - constructor(largura: number, altura: number) { - this.largura = largura; - this.altura = altura; - } - - funcaoObterArea() { - return function () { - return this.largura * this.altura; - }; - } -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noImplicitUseStrict.md b/packages/tsconfig-reference/copy/pt/options/noImplicitUseStrict.md deleted file mode 100644 index af90e1d56976..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noImplicitUseStrict.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -display: "Sem 'Use Strict' Implícito" -oneline: "Desabilita 'use strict' na emissão JS" ---- - -Você não deveria precisar disso. Por padrão, ao emitir um arquivo de módulo para um destino não ES6, o TypeScript emite um prólogo `"use strict";` no topo do arquivo. -Esta configuração desabilita o prólogo. - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -// @noImplicitUseStrict -// @alwaysStrict: false -export function fn() {} -``` - -```ts twoslash -// @showEmit -// @target: ES3 -// @module: AMD -export function fn() {} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noLib.md b/packages/tsconfig-reference/copy/pt/options/noLib.md deleted file mode 100644 index e09fc292a695..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noLib.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Sem Biblioteca" -oneline: "Ignora opções de biblioteca" ---- - -Desabilita a inclusão automática de qualquer arquivo de biblioteca. -Se esta opção estiver definida, `lib` é ignorada. diff --git a/packages/tsconfig-reference/copy/pt/options/noResolve.md b/packages/tsconfig-reference/copy/pt/options/noResolve.md deleted file mode 100644 index becbf4f4b43a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noResolve.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Sem Resolução" -oneline: "Pula a verificação antecipada para arquivos de 'import' e '(x: T, y: U) => [T, U]; -type B = (x: S, y: S) => [S, S]; - -function f(a: A, b: B) { - b = a; // Ok - a = b; // Erro -} -``` - -Esta flag pode ser usada para remover essa verificação. diff --git a/packages/tsconfig-reference/copy/pt/options/noUncheckedIndexedAccess.md b/packages/tsconfig-reference/copy/pt/options/noUncheckedIndexedAccess.md deleted file mode 100644 index 1096c6e1f0df..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noUncheckedIndexedAccess.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -display: "noUncheckedIndexedAccess" -oneline: "Usa undefined para um tipo quando acessado através de um índice" ---- - -TypeScript tem uma maneira para descrever objetos que têm chaves desconhecidas, mas valores conhecidos, através da assinatura de índice. - -```ts twoslash -interface EnvironmentVars { - NAME: string; - OS: string; - - // Propriedades desconhecidas são cobertas por esta assinatura de índice. - [propName: string]: string; -} - -declare const env: EnvironmentVars; - -// Declarada como existente -const sysName = env.NAME; -const os = env.OS; -// ^? - -// Não declarada, mas por causa da assinatura -// de índice, é considerada uma string -const nodeEnd = env.NODE_ENV; -// ^? -``` - -Ativar `noUncheckedIndexedAccess` adicionará `undefined` para qualquer campo não declarado no tipo. - -```ts twoslash -interface EnvironmentVars { - NAME: string; - OS: string; - - // Propriedades desconhecidas são cobertas por esta assinatura de índice. - [propName: string]: string; -} -// @noUncheckedIndexedAccess -// ---cut--- -declare const env: EnvironmentVars; - -// Declarada como existente -const sysName = env.NAME; -const os = env.OS; -// ^? - -// Não declarada, mas por causa da assinatura -// de índice, é considerada uma string -const nodeEnd = env.NODE_ENV; -// ^? -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noUnusedLocals.md b/packages/tsconfig-reference/copy/pt/options/noUnusedLocals.md deleted file mode 100644 index 8b69522fb13c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noUnusedLocals.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Sem Variáveis Locais Não Utilizadas" -oneline: "Emite erro quando uma váriavel local não é lida" ---- - -Reporta erros em variáveis locais não utilizadas. - -```ts twoslash -// @noUnusedLocals -// @errors: 6133 -const criaTeclado = (modeloID: number) => { - const modeloPadraoID = 23; - return { tipo: "teclado", modeloID }; -}; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/noUnusedParameters.md b/packages/tsconfig-reference/copy/pt/options/noUnusedParameters.md deleted file mode 100644 index fe1b3b648ea6..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/noUnusedParameters.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -display: "Sem Parâmetros Não Utilizados" -oneline: "Emite erro quando um parâmetro não é utilizado" ---- - -Reporta erros em parâmetros não utilizados em funções. - -```ts twoslash -// @noUnusedParameters -// @errors: 6133 -const criaTecladoPadrao = (modeloID: number) => { - const modeloPadraoID = 23; - return { tipo: "teclado", modeloID: modeloPadraoID }; -}; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/out.md b/packages/tsconfig-reference/copy/pt/options/out.md deleted file mode 100644 index 41905fe30a50..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/out.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Saída" -oneline: "Evite usar esta opção" ---- - -Use [outFile](#outfile) ao invés. - -A opção `out` calcula a localização final do arquivo de uma forma que não é previsível ou consistente. -Esta opção foi mantida apenas para compatibilidade com versões anteriores e foi descontinuada. diff --git a/packages/tsconfig-reference/copy/pt/options/outDir.md b/packages/tsconfig-reference/copy/pt/options/outDir.md deleted file mode 100644 index cc6efe302b21..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/outDir.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Diretório de saída" -oneline: "Defina uma pasta de saída para todos os arquivos emitidos" ---- - -Se especificado, os arquivos `.js` (como o `.d.ts`, e `.js.map`, etc.) serão emitidos para este diretório. -A estrutura de diretório dos arquivos de origem originais é preservada; consulte [rootDir](#rootDir) se a raiz calculada não for o que você pretendia. - -Se não for especificado, os arquivos `.js` serão emitidos no mesmo diretório que os arquivos` .ts` de onde foram gerados: - -```sh -$ tsc - -exemplo -├── index.js -└── index.ts -``` - -Com um `tsconfig.json` como este: - -```json -{ - "compilerOptions": { - "outDir": "dist" - } -} -``` - -Executar `tsc` com essas configurações move os arquivos para a pasta `dist` especificada: - -```sh -$ tsc - -exemplo -├── dist -│ └── index.js -├── index.ts -└── tsconfig.json -``` diff --git a/packages/tsconfig-reference/copy/pt/options/outFile.md b/packages/tsconfig-reference/copy/pt/options/outFile.md deleted file mode 100644 index 472d886dd2dc..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/outFile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Arquivo de saída" -oneline: "Produza um único arquivo de todos os arquivos JS concatenados" ---- - -Se especificado, todos os arquivos _global_ (não módulos) serão concatenados no único arquivo de saída especificado. - -Se `module` for `system` ou `amd`, todos os arquivos do módulo também serão concatenados neste arquivo após todo o conteúdo global. - -Nota: `outFile` não pode ser usado a menos que `module` seja `None`, `System`, ou `AMD`. -Esta opção _não pode_ pode ser usada para agrupar módulos CommonJS ou ES6. diff --git a/packages/tsconfig-reference/copy/pt/options/paths.md b/packages/tsconfig-reference/copy/pt/options/paths.md deleted file mode 100644 index 558b77747879..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/paths.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Caminhos" -oneline: "Um conjunto de locais para buscar importações" ---- - -Uma série de entradas que remapeiam as importações para locais de pesquisa relativos à `baseUrl`, há uma cobertura mais abrangente de `paths` no [manual](/docs/handbook/module-resolution.html#path-mapping). - -`paths` permite que você declare como o TypeScript deve resolver importações nos seus `requires` e `imports`. - -```json tsconfig tsconfig -{ - "compilerOptions": { - "baseUrl": ".", // isto deve ser especificado se "paths" está especificado. - "paths": { - "jquery": ["node_modules/jquery/dist/jquery"] // este mapeamento é relativo à "baseUrl" - } - } -} -``` - -Isto permitiria que você escreva `import "jquery"`, e obtenha toda a digitação correta localmente. - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": "src", - "paths": { - "app/*": ["app/*"], - "config/*": ["app/_config/*"], - "environment/*": ["environments/*"], - "shared/*": ["app/_shared/*"], - "helpers/*": ["helpers/*"], - "tests/*": ["tests/*"] - }, -} -``` - -Neste caso, você pode infomar o resolvedor de arquivos do TypeScript para dar suporte à vários prefixos personalizados para encontrar código. -Este padrão pode ser usado para evitar caminhos relativos longos no seu código base. diff --git a/packages/tsconfig-reference/copy/pt/options/plugins.md b/packages/tsconfig-reference/copy/pt/options/plugins.md deleted file mode 100644 index 0223a34139a9..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/plugins.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -display: "Plugins" -oneline: "Uma lista de plugins de linguagem a serem incluídos" ---- - -Lista de plugins de serviço de linguagem a serem executados dentro do editor. - -Os plugins de serviço de linguagem são uma forma de fornecer informações adicionais a um usuário com base em arquivos TypeScript existentes. Eles podem aprimorar as mensagens existentes entre o TypeScript e um editor ou fornecer suas próprias mensagens de erro. - -Por exemplo: - -- [ts-sql-plugin](https://github.com/xialvjun/ts-sql-plugin#readme) — Adiciona linting SQL com um construtor SQL usando template strings. -- [typescript-styled-plugin](https://github.com/Microsoft/typescript-styled-plugin) — Fornece linting CSS dentro de template strings. -- [typescript-eslint-language-service](https://github.com/Quramy/typescript-eslint-language-service) — Fornece mensagens de erro ESLint e correções dentro da saída do compilador. -- [ts-graphql-plugin](https://github.com/Quramy/ts-graphql-plugin) — Fornece validação e preenchimento automático dentro das strings do modelo de consulta GraphQL. - -VS Code tem a capacidade de uma extensão para [incluir automaticamente plugins de serviço de linguagem](https://code.visualstudio.com/api/references/contribution-points#contributes.typescriptServerPlugins), e assim você pode ter alguns rodando em seu editor sem precisar defini-los em seu `tsconfig.json`. diff --git a/packages/tsconfig-reference/copy/pt/options/preserveConstEnums.md b/packages/tsconfig-reference/copy/pt/options/preserveConstEnums.md deleted file mode 100644 index e8566f641784..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/preserveConstEnums.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -display: "Manter Enums Constantes" -oneline: "Não apaga as declarações `const enum` no código gerado" ---- - -Não apaga as declarações `const enum` em seu código gerado. `const enum` provê uma maneira de reduzir a quantidade de memória utilizada por sua aplicação em tempo de execução emitindo o valor do enum ao invés de sua referência. - -Por exemplo nesse código TypeScript: - -```ts twoslash -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const albumSelecionado = Album.JimmyEatWorldFutures; -if (albumSelecionado === Album.JimmyEatWorldFutures) { - console.log("Excelente escolha."); -} -``` - -O comportamento padrão `const enum` é converter qualquer `Album.AlgumaCoisa` para o literal correspondente, além de remover a referência do enum do JavaScript completamente. - -```ts twoslash -// @showEmit -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const albumSelecionado = Album.JimmyEatWorldFutures; -if (albumSelecionado === Album.JimmyEatWorldFutures) { - console.log("Excelente escolha."); -} -``` - -Com a opção `preserveConstEnums` definida como `true`, o `enum` existe em tempo de execução e os números ainda são emitidos. - -```ts twoslash -// @preserveConstEnums: true -// @showEmit -const enum Album { - JimmyEatWorldFutures = 1, - TubRingZooHypothesis = 2, - DogFashionDiscoAdultery = 3 -} - -const albumSelecionado = Album.JimmyEatWorldFutures; -if (albumSelecionado === Album.JimmyEatWorldFutures) { - console.log("Excelente escolha."); -} -``` - -Isso essencialmente faz com que `const enums` seja uma funcionalidade apenas do código-fonte. diff --git a/packages/tsconfig-reference/copy/pt/options/preserveSymlinks.md b/packages/tsconfig-reference/copy/pt/options/preserveSymlinks.md deleted file mode 100644 index c851cc135d0f..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/preserveSymlinks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Preservar Symlinks" -oneline: "Não resolva caminhos de links simbólicos" ---- - -Esta opção serve para refletir a mesma flag do Node.js; que não resolve o caminho real de links simbólicos. - -Esta flag também exibe o comportamento oposto ao da opção `resolve.symlinks` do Webpack (ou seja, definir `preserveSymlinks` do TypeScript para true é o mesmo que definir `resolve.symlinks` do Webpack para false, e vice-versa). - -Com esta opção habilitada, as referências para módulos e pacotes (ex. diretivas `import` e `/// `) são todas resolvidas em relação ao local do symlink em si, em vez de relativas ao caminho que o symlink resolve. diff --git a/packages/tsconfig-reference/copy/pt/options/preserveWatchOutput.md b/packages/tsconfig-reference/copy/pt/options/preserveWatchOutput.md deleted file mode 100644 index b3ea747bd0cd..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/preserveWatchOutput.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Manter as saídas observadas" -oneline: "Não limpar o console no modo de observação" ---- - -Mantém as saídas desatualizadas no console durante o modo de observação, ao invés de limpar a tela toda vez que ocorrer alguma modificação. \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/pt/options/pretty.md b/packages/tsconfig-reference/copy/pt/options/pretty.md deleted file mode 100644 index baa2e0dc31a9..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/pretty.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Embelezar" -oneline: "Usa cores e formatos para tornar os erros de compilação mais fáceis de ler" ---- - -Estiliza erros e mensagens utilizando cores e contexto, isso é ativado por padrão — oferece a você a oportunidade de receber do compilador menos mensagens concisas e de uma única cor. diff --git a/packages/tsconfig-reference/copy/pt/options/reactNamespace.md b/packages/tsconfig-reference/copy/pt/options/reactNamespace.md deleted file mode 100644 index 1f1bd4db5657..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/reactNamespace.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Namespace do React" -oneline: "Especificar o objeto em que 'createElement' é chamado no JSX" - ---- - -Use [`--jsxFactory`](#jsxFactory) ao invés disso. Especifica o objeto invocado por `createElement` ao direcionar `react` para arquivos TSX. diff --git a/packages/tsconfig-reference/copy/pt/options/references.md b/packages/tsconfig-reference/copy/pt/options/references.md deleted file mode 100644 index f1ce592674fe..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/references.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Referências" -oneline: "Prover uma estrutura para projetos compostos" ---- - -As referências de projetos são uma forma de estruturar seus programas TypeScript em partes menores. -Usar referências de projetos pode melhorar muito o tempo de construção e de interação com o editor, forçar uma separação lógica entre os elementos e organizar seu código de novas formas e métodos mais aprimorados. - -Você pode ler mais sobre como as referências funcionam na seção [Referências de Projetos](/docs/handbook/project-references.html). diff --git a/packages/tsconfig-reference/copy/pt/options/removeComments.md b/packages/tsconfig-reference/copy/pt/options/removeComments.md deleted file mode 100644 index d5c4a2376529..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/removeComments.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -display: "Remover Comentários" -oneline: "Remove comentários do TypeScript para não aparecer no JavaScript" - ---- - -Remove todos os comentários do TypeScript ao converter para JavaScript. O padrão é `false`. - -Por exemplo, esse documento TypeScript que tem um comentário JSDoc: - -```ts -/** Tradução de 'Hello World' para português. */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -Quando `removeComments` é definido para `true`: - -```ts twoslash -// @showEmit -// @removeComments: true -/** Tradução de 'Hello World' para português. */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -Sem a opção `removeComments` ou com ela definida para `false`: - -```ts twoslash -// @showEmit -// @removeComments: false -/** Tradução de 'Hello World' para português. */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -Isso significa que seu comentário vai aparecer no código JavaScript. diff --git a/packages/tsconfig-reference/copy/pt/options/resolveJsonModule.md b/packages/tsconfig-reference/copy/pt/options/resolveJsonModule.md deleted file mode 100644 index 41f36d6a1360..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/resolveJsonModule.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -display: "Resolução de módulo JSON" -oneline: "Permite importar arquivos .json." ---- - -Permite importar módulos com um uma extensão '.json', que é uma prática comum em projetos node. Isso inclui gerar um arquivo `import` baseado na forma estática do JSON. - -O TypeScript não suporta a resolução de arquivos JSON por padrão: - -```ts twoslash -// @errors: 2732 -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` - -Ativar essa opção permite importar JSON e validar os tipos nesse arquivo JSON. - -```ts twoslash -// @errors: 2367 -// @resolveJsonModule -// @module: commonjs -// @moduleResolution: node -// @filename: settings.json -{ - "repo": "TypeScript", - "dry": false, - "debug": false -} -// @filename: index.ts -import settings from "./settings.json"; - -settings.debug === true; -settings.dry === 2; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/rootDir.md b/packages/tsconfig-reference/copy/pt/options/rootDir.md deleted file mode 100644 index f21aa55c4704..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/rootDir.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -display: "Diretório Raiz" -oneline: "Define o diretório raiz dos seus arquivos fonte" ---- - -**Padrão**: O caminho mais longo em comum entre todos os arquivos que não são de declaração. Se `composite` está definido, o padrão será o diretório contendo o arquivo `tsconfig.json`. - -Quando TypeScript compila os arquivos, ele mantém a estrutura dos diretório de saída igual a dos diretório de entrada. - -Por exemplo, suponhamos que você tenha alguns arquivos de entrada: - -``` -MeuProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -├── types.d.ts -``` - -O valor inferido para `rootDir` é o caminho mais longo em comum entre todos os arquivos que não são de declaração, que neste caso é `core/`. - -Se o seu `outDir` fosse `dist`, TypeScript escreveria esta árvore: - -``` -MeuProj -├── dist -│ ├── a.js -│ ├── b.js -│ ├── sub -│ │ ├── c.js -``` - -Contudo, você pode ter a intenção de que `core` seja parte da estrutura do diretório de saída. -Ao definir `rootDir: "."` em `tsconfig.json`, TypeScript escreveria esta árvore: - -``` -MeuProj -├── dist -│ ├── core -│ │ ├── a.js -│ │ ├── b.js -│ │ ├── sub -│ │ │ ├── c.js -``` - -Importante, a opção `rootDir` **não altera quais arquivos se tornam parte da compilação**, pois não há interação com `include`, `exclude`, ou com a propriedade `files` em `tsconfig.json`. - -Note que TypeScript nunca irá escrever um arquivo de saída em um diretório fora de `outDir`, e nunca irá pular a emissão de um arquivo. -Por este motivo, `rootDir` também impõe que todos arquivos que precisam ser emitidos estejam abaixo do caminho `rootDir`. - -Por exemplo, digamos que você tivesse esta árvore: - -``` -MeuProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -├── ajudantes.ts -``` - -Seria um erro especificar `rootDir` como `core` _e_ `include` como `*`, porque estaria sendo criado um arquivo (`ajudantes.ts`) que precisaria ser emitido _fora_ do `outDir` (i.e. `../ajudantes.js`). diff --git a/packages/tsconfig-reference/copy/pt/options/rootDirs.md b/packages/tsconfig-reference/copy/pt/options/rootDirs.md deleted file mode 100644 index b60590ce127a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/rootDirs.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "Diretórios Raiz" -oneline: "Define múltiplos diretórios raiz" ---- - -Usando `rootDirs`, você pode informar ao compilador que existem vários diretórios raiz agindo como um único diretório raiz "virtual". -Isso faz com que o compilador resolva importações relativas de módulos como se estes diretórios fossem um único diretório raiz. - -Por exemplo: - -``` - src - └── views - └── view1.ts (pode importar "./template1", "./view2`) - └── view2.ts (pode importar "./template1", "./view1`) - - generated - └── templates - └── views - └── template1.ts (pode importar "./view1", "./view2") -``` - -```json tsconfig -{ - "compilerOptions": { - "rootDirs": ["src/views", "generated/templates/views"] - } -} -``` - -Esta propriedade não altera como TypeScript emite JavaScript, mas apenas emula a suposição de que -os arquivos JavaScript poderão trabalhar através desses caminhos relativos em tempo de execução. diff --git a/packages/tsconfig-reference/copy/pt/options/skipDefaultLibCheck.md b/packages/tsconfig-reference/copy/pt/options/skipDefaultLibCheck.md deleted file mode 100644 index 1f03d9cf7ce1..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/skipDefaultLibCheck.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "Ignorar a verificação da biblioteca padrão" -oneline: "Utilize o SkipLibCheck ao invés dessa" ---- - -Usar [`--skipLibCheck`](#skipLibCheck) no lugar dessa. Ignora a checagem dos tipos de arquivos de declaração na biblioteca padrão. diff --git a/packages/tsconfig-reference/copy/pt/options/skipLibCheck.md b/packages/tsconfig-reference/copy/pt/options/skipLibCheck.md deleted file mode 100644 index aae989f777c9..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/skipLibCheck.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Ignorar a verificação de biblioteca" -oneline: "Pula a verificação dos arquivos de declaração" ---- - -Ignora a verificação dos arquivos de declaração. - -Isso pode economizar tempo durante a compilação, porém, às custas da precisão do sistema de tipos. Por exemplo, duas bibliotecas podem definir duas cópias do mesmo `type` de modo inconsistente. Em vez de fazer uma verificação completa de todos os arquivos `d.ts`, o TypeScript irá verificar o código ao qual você se refere no código-fonte do aplicativo. - -Um uso comum para se usar o `skipLibCheck` é quando há duas cópias de uma biblioteca no seu `node_modules`. Nesses casos você deve considerar usar um recurso como as [resoluções do yarn](https://classic.yarnpkg.com/pt-BR/docs/selective-version-resolutions) para garantir que há apenas uma única cópia de cada dependência na sua árvore, ou descobrir como se certificar, entendendo as resoluções de dependência, como manter uma única cópia sem utilizar nenhuma ferramenta adicional. diff --git a/packages/tsconfig-reference/copy/pt/options/sourceMap.md b/packages/tsconfig-reference/copy/pt/options/sourceMap.md deleted file mode 100644 index a21836c98485..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/sourceMap.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -display: "Mapas de código" -oneline: "Cria mapas de código para os arquivos JavaScript emitidos" - ---- - -Permite a geração de [mapas de código](https://developer.mozilla.org/pt-PT/docs/Tools/Debugger/How_to/Use_a_source_map). Esses arquivos permitem que depuradores e outras ferramentas exibam o código fonte TypeScript original ao trabalhar com os arquivos JavaScript emitidos. Mapas de código são emitidos como arquivos `js.map` (ou `jsx.map`) ao lado dos arquivos de saída `.js` correspondentes. - -Os arquivos `.js` recebem um container com comentários do mapa de código, indicando para as ferramentas externas onde os arquivos estão. Por exemplo: - -```ts -// helloWorld.ts -export declare const helloWorld = "Olá"; -``` - -Compilando com o `sourceMap` configurado como `true`, a criação do arquivo JavaScript seguirá assim: - -```js -// helloWorld.js -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.helloWorld = "Olá"; -//# sourceMappingURL=// helloWorld.js.map -``` - -E isso irá gerar o seguinte arquivo json do mapa: - -```json -// helloWorld.js.map -{ - "version": 3, - "file": "ex.js", - "sourceRoot": "", - "sources": ["../ex.ts"], - "names": [], - "mappings": ";;AAAa,QAAA,UAAU,GAAG,IAAI,CAAA" -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/sourceRoot.md b/packages/tsconfig-reference/copy/pt/options/sourceRoot.md deleted file mode 100644 index c8d0bf383268..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/sourceRoot.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -display: "Raiz do código-fonte" -oneline: "Configura o caminho da raiz para depuradores acharem o código-fonte referenciado" - ---- - -Especifica a localização onde o depurador deve encontrar os arquivos TypeScript ao invés de outros locais relativos de origem. -Essa string é processada literalmente dentro do mapa de origem, onde você pode utilizar um caminho ou uma URL: - -```json -{ - "compilerOptions": { - "sourceMap": true, - "sourceRoot": "https://my-website.com/debug/source/" - } -} -``` - -Declara que o `index.js` tem um arquivo fonte em `https://my-website.com/debug/source/index.ts`. diff --git a/packages/tsconfig-reference/copy/pt/options/strict.md b/packages/tsconfig-reference/copy/pt/options/strict.md deleted file mode 100644 index 73669c6ff057..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/strict.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "Modo estrito" -oneline: "Ativa as regras de verificação de tipo mais detalhadas do TypeScript" ---- - -A opção `strict` permite uma ampla gama de comportamento de verificação de tipo que resulta em melhores garantias de correção do programa. -Ativar isso equivale a ativar todas as opções da _família do modo restrito_, que são descritas abaixo. -Você pode desativar as verificações de família de modo restrito individualmente conforme necessário. - -Versões futuras do TypeScript podem introduzir verificação rigorosas adicionais dentro desta opção, portanto, as atualizações do TypeScript podem resultar em novos erros de tipo em seu programa. -Quando apropriado e possível, uma opção correspondente será adicionado para desativar esse comportamento. diff --git a/packages/tsconfig-reference/copy/pt/options/strictBindCallApply.md b/packages/tsconfig-reference/copy/pt/options/strictBindCallApply.md deleted file mode 100644 index e5413f1a4320..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/strictBindCallApply.md +++ /dev/null @@ -1,34 +0,0 @@ ---- -display: "Bind Call Apply Restritos" -oneline: "Garante que 'call', 'bind' e 'apply' tenham os argumentos corretos" ---- - -Quando definido, o TypeScript verificará se os métodos integrados das funções `call`, `bind` e `apply` são invocados com os argumentos corretos para a função subjacente: - -```ts twoslash -// @strictBindCallApply: true -// @errors: 2345 - -// Com strictBindCallApply ativado -function fn(x: string) { - return parseInt(x); -} - -const n1 = fn.call(undefined, "10"); - -const n2 = fn.call(undefined, false); -``` - -Caso contrário, essas funções aceitarão qualquer argumento e retornarão `any`: - -```ts twoslash -// @strictBindCallApply: false - -// Com strictBindCallApply desativado -function fn(x: string) { - return parseInt(x); -} - -// Nota: Sem erro; tipo do retorno é 'any' -const n = fn.call(undefined, false); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/strictFunctionTypes.md b/packages/tsconfig-reference/copy/pt/options/strictFunctionTypes.md deleted file mode 100644 index 328a7e4d7e16..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/strictFunctionTypes.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -display: "Tipo de Funções Restritos" -oneline: "Garante que os parâmetros da função são consistentes" ---- - -Quando ativado, esta opção faz com que os parâmetros das funções sejam verificados mais corretamente. - -Aqui está um exemplo básico com `strictFunctionTypes` desativado: - -```ts twoslash -// @strictFunctionTypes: false -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -type StringOrNumberFunc = (ns: string | number) => void; - -// Atribuição não segura -let func: StringOrNumberFunc = fn; -// Chamada não segura - vai quebrar -func(10); -``` - -Com `strictFunctionTypes` ativado, o erro é detectado corretamente: - -```ts twoslash -// @errors: 2322 -function fn(x: string) { - console.log("Olá, " + x.toLowerCase()); -} - -type StringOuNumeroFn = (ns: string | number) => void; - -// Atribuição não segura é prevenida -let func: StringOuNumeroFn = fn; -``` - -Durante o desenvolvimento desse recurso, descobrimos um grande número de hierarquias de classes profundamente não seguras, incluindo algumas no DOM. -Por causa disso, a configuração apenas se aplica a funções escritas na sintaxe _function_, não àquelas na sintaxe _method_: - -```ts twoslash -type PareceUmMetodo = { - func(x: string | number): void; -}; - -function fn(x: string) { - console.log("Olá, " + x.toLowerCase()); -} - -// Por fim, uma atribuição insegura, porém não detectada. -const m: PareceUmMetodo = { - func: fn, -}; -m.func(10); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/strictNullChecks.md b/packages/tsconfig-reference/copy/pt/options/strictNullChecks.md deleted file mode 100644 index a012e3f99b4c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/strictNullChecks.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -display: "Checagem estrita de nulos" -oneline: "Certifique-se de que a nulidade é respeitada ao se verificar os tipos" ---- - -Quando `strictNullChecks` é `false`, `null` e `undefined` são efetivamentes ignorados pela linguagem. Isso pode levar a erros inesperados em tempo de execução. - -Quando `strictNullChecks` é `true`, `null` e `undefined` têm seus próprios tipos distintos e você obterá um erro de tipo se tentar usá-los onde um valor concreto é esperado. - -Por exemplo, com este código TypeScript, `usuarios.find` você não tem garantia de que realmente encontrará um usuário, mas você pode escrever o código como se ele fosse: - -```ts twoslash -// @strictNullChecks: false -// @target: ES2015 -declare const nomeDeUsuarioLogado: string; - -const usuarios = [ - { nome: "Henrique", idade: 12 }, - { nome: "Carol", idade: 32 } -]; - -const usuarioLogado = usuarios.find(u => u.nome === nomeDeUsuarioLogado); -console.log(usuarioLogado.idade); -``` - -Configurar `strictNullChecks` para `true` irá gerar um erro de que você não garantiu a existência de `usuarioLogado` antes de tentar usá-lo. - -```ts twoslash -// @errors: 2339 2532 -// @target: ES2020 -// @strictNullChecks -declare const nomeDeUsuarioLogado: string; - -const usuarios = [ - { nome: "Henrique", idade: 12 }, - { nome: "Carol", idade: 32 } -]; - -const usuarioLogado = usuarios.find(u => u.nome === nomeDeUsuarioLogado); -console.log(usuarioLogado.idade); -``` - -O segundo exemplo falhou porque a função `find` do array se parece um pouco com esta simplificação: - -```ts -// Quando strictNullChecks: true -type Array = { - find(predicate: (value: any, index: number) => boolean): S | undefined; -}; - -// Quando strictNullChecks: false, o undefined é removido do sistema de tipos, -// permitindo que você escreva um código que assume que sempre encontrou um resultado -type Array = { - find(predicate: (value: any, index: number) => boolean): S; -}; -``` diff --git a/packages/tsconfig-reference/copy/pt/options/strictPropertyInitialization.md b/packages/tsconfig-reference/copy/pt/options/strictPropertyInitialization.md deleted file mode 100644 index 26756442389c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/strictPropertyInitialization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -display: "Inicialização restrita de propriedade" -oneline: "Garante que todas as propriedades da classe correspondam aos seus tipos depois que o construtor finalizar" ---- - -Quando definido como `true`, o TypeScript gerará um erro quando uma propriedade de classe for declarada, mas não definida no construtor. - -```ts twoslash -// @errors: 2564 -class Conta { - nome: string; - tipo = "usuario"; - - email: string; - endereco: string | undefined; - - constructor(nome: string) { - this.nome = nome; - // Note que this.email não foi atribuído - } -} -``` - -No caso acima: - -- `this.nome` é atribuído especificamente. -- `this.tipo` é atribuído por padrão. -- `this.email` não é atribuído e gera um erro. -- `this.endereco` é declarado como possível `undefined`, o que significa que não precisa ser atribuído. diff --git a/packages/tsconfig-reference/copy/pt/options/stripInternal.md b/packages/tsconfig-reference/copy/pt/options/stripInternal.md deleted file mode 100644 index 952f25abb012..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/stripInternal.md +++ /dev/null @@ -1,60 +0,0 @@ ---- -display: "Remover internal" -oneline: "Remove as declarações que têm '@internal' em seus comentários JSDoc" ---- - -Não emite declarações para códigos que tenham uma anotação `@internal` em seu comentário JSDoc. -Esta é uma opção interna do compilador; use por sua conta em risco, porque o compilador não verifica se o resultado é válido. -Se você estiver procurando por uma ferramenta para lidar com níveis adicionais de visibilidade dentro de seus arquivos `d.ts`, veja o [api-extractor](https://api-extractor.com). - -```ts twoslash -/** - * Dias disponíveis na semana - * @internal - */ -export const diasNaSemana = 7; - -/** Calcule quanto alguém ganha em uma semana */ -export function salarioSemanal(porDia: number) { - return diasNaSemana * porDia; -} -``` - -Com a opção definida como `false` (padrão): - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -/** - * Dias disponíveis na semana - * @internal - */ -export const diasNaSemana = 7; - -/** Calcule quanto alguém ganha em uma semana */ -export function salarioSemanal(porDia: number) { - return diasNaSemana * porDia; -} -``` - -Com `stripInternal` definido como `true` o `d.ts` emitido será editado. - -```ts twoslash -// @stripinternal -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -/** - * Dias disponíveis na semana - * @internal - */ -export const diasNaSemana = 7; - -/** Calcule quanto alguém ganha em uma semana */ -export function selarioSemanal(porDia: number) { - return diasNaSemana * porDia; -} -``` - -A JavaScript emitido ainda é o mesmo. diff --git a/packages/tsconfig-reference/copy/pt/options/suppressExcessPropertyErrors.md b/packages/tsconfig-reference/copy/pt/options/suppressExcessPropertyErrors.md deleted file mode 100644 index 5066bfa096eb..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/suppressExcessPropertyErrors.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -display: "Prevenir erros de propriedades em excesso" -oneline: "Permitir que propriedades adicionais sejam definidas durante a criação de tipos" ---- - -Desativa o relatório de erros de propriedades em excesso, como o mostrado no exemplo a seguir: - -```ts twoslash -// @errors: 2322 -type Point = { x: number; y: number }; -const p: Point = { x: 1, y: 3, m: 10 }; -``` - -Esta opção foi adicionada para ajudar as pessoas a migrar para a verificação mais rigorosa de novos objetos literais no [TypeScript 1.6](/docs/handbook/release-notes/typescript-1-6.html#stricter-object-literal-assignment-checks). - -Não recomendamos o uso dessa sinalização em uma base de código moderna, você pode prevenir casos únicos em que precise dela usando `// @ts-ignore`. diff --git a/packages/tsconfig-reference/copy/pt/options/suppressImplicitAnyIndexErrors.md b/packages/tsconfig-reference/copy/pt/options/suppressImplicitAnyIndexErrors.md deleted file mode 100644 index c11930accf2b..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/suppressImplicitAnyIndexErrors.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -display: "Prevenir erros de implicit any index" -oneline: "Remove o aviso ao usar índices de string para acessar propriedades desconhecidas" ---- - -Ativando `suppressImplicitAnyIndexErrors` previne o relato do erros sobre qualquer implícito ao indexar objetos, conforme mostrado no exemplo a seguir: - -```ts twoslash -// @noImplicitAny: true -// @suppressImplicitAnyIndexErrors: false -// @strict: true -// @errors: 7053 -const obj = { x: 10 }; -console.log(obj["foo"]); -``` - -Usar `suppressImplicitAnyIndexErrors` é uma abordagem bastante extrema. É recomendado usar um comentário `@ts-ignore` ao invés: - -```ts twoslash -// @noImplicitAny: true -// @strict: true -const obj = { x: 10 }; -// @ts-ignore -console.log(obj["foo"]); -``` diff --git a/packages/tsconfig-reference/copy/pt/options/target.md b/packages/tsconfig-reference/copy/pt/options/target.md deleted file mode 100644 index 7c5d1a13b22c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/target.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "Runtime alvo" -oneline: "Defina o runtime suportado da linguagem JavaScript para ser transpilado" ---- - -Navegadores modernos suportam todas as funcionalidades ES6, então `ES6` é uma boa escolha. -Você pode definir um alvo (target) mais baixo se o deploy do seu código for feito em ambientes antigos, ou um alvo mais alto se o seu código é garantido de rodar em ambientes mais novos. - -A configuração `target` altera quais funcionalidades JS serão niveladas para baixo e quais ficarão inalteradas. -Por exemplo, a arrow function `() => this` será transformada na expressão `function` equivalente se o `target` for ES5 ou mais baixo. - -Alterando o `target` também alterará o valor da [`lib`](#lib). -Você pode "misturar e combinar" as configurações `target` e `lib` da forma que quiser, mas você pode definir apenas o `target`, por conveniência. - -Se você está trabalhando apenas com Node.js, esses são os `target`s recomendados para essas versões do Node: - -| Name | Supported Target | -| ------- | ---------------- | -| Node 8 | `ES2017` | -| Node 10 | `ES2018` | -| Node 12 | `ES2019` | - -Eles são baseados no banco de dados de suporte do [node.green](https://node.green). - -O valor especial `ESNext` se refere a versão mais alta que a sua versão do TypeScript suporta. -Essa configuração deve ser utilizada com precaução, pois não significa a mesma coisa entre diferentes versões do TypeScript e pode tornar atualizações menos previsíveis. diff --git a/packages/tsconfig-reference/copy/pt/options/traceResolution.md b/packages/tsconfig-reference/copy/pt/options/traceResolution.md deleted file mode 100644 index 7c357d4ece98..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/traceResolution.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "Resolução de rastreamento" -oneline: "Fazer log de caminhos ao resolver todos os módulos" ---- - -Quando você estiver tentando depurar o motivo de um módulo não ter sido incluso, -você pode definir o `traceResolutions` para `true` para que o TypeScript imprima informações sobre o seu processo de resolução de cada arquivo processado. - -Você pode ler mais sobre projetos compostos [nesse guia](/docs/handbook/module-resolution.html#tracing-module-resolution). diff --git a/packages/tsconfig-reference/copy/pt/options/tsBuildInfoFile.md b/packages/tsconfig-reference/copy/pt/options/tsBuildInfoFile.md deleted file mode 100644 index 17c9ad074a8c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/tsBuildInfoFile.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Arquivo de informações da build do TS" -oneline: "Conjunto de pastas para os arquivos .tsbuildinfo" ---- - -Essa configuração possibilita a você especificar um arquivo para armazenar informações incrementais de compilação como parte de projetos compostos que habilitam -builds rápidas de grandes bases de código TypeScript. Você pode ler mais sobre projetos compostos [nesse guia](/docs/handbook/project-references.html). - -Essa opção oferece uma forma de configurar o local onde o TypeScript se mantém informado sobre os arquivos que armazena no disco para -indicar o estado de build de um projeto — por padrão, eles estão na mesma pasta dos seus JavaScripts emitidos. diff --git a/packages/tsconfig-reference/copy/pt/options/typeAcquisition.md b/packages/tsconfig-reference/copy/pt/options/typeAcquisition.md deleted file mode 100644 index 15e1ebc717ff..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/typeAcquisition.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -display: "Aquisição de tipo" -oneline: "Conjunto de opções para aquisição de tipo automática no JavaScript" ---- - -Quando você tem um projeto JavaScript no seu editor, TypeScript providenciará tipos para o seu `node_modules` automaticamente utilizando o conjunto de definições de `@types`, DefinitelyTyped. -Isso é conhecido como aquisição de tipo automática e você pode modificá-la utilizando o objecto `typeAcquisition` no seu arquivo de configuração. - -Se você quiser desabilitar ou modificar essa funcionalidade, crie o `jsconfig.json` na raíz do seu projeto: - -```json -{ - "typeAcquisition": { - "enable": false - } -} -``` - -Se você quer incluir um módulo específico (mas ele não está em `node_modules`): - -```json -{ - "typeAcquisition": { - "include": ["jest"] - } -} -``` - -Se um módulo não deve ser automaticamente adquirido, por exemplo, se uma biblioteca está disponível no seu `node_modules`, mas a sua equipe concordou em não utilizá-lo: - -```json -{ - "typeAcquisition": { - "exclude": ["jquery"] - } -} -``` diff --git a/packages/tsconfig-reference/copy/pt/options/typeRoots.md b/packages/tsconfig-reference/copy/pt/options/typeRoots.md deleted file mode 100644 index b39bd09180e3..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/typeRoots.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -display: "Raizes de Tipo" -oneline: "Locais onde o TypeScript deve buscar por definições de tipo" ---- - -Por padrão todos pacotes `@types` _visíveis_ são incluídos na sua compilação. -Pacotes em `node_modules/@types` de qualquer diretório adjacente são considerados _visíveis_. -Por exemplo, isso significa pacotes dentro de `./node_modules/@types/`, `../node_modules/@types/`, `../../node_modules/@types/`, e assim por diante. - -Se `typeRoots` está especificado, _somente_ pacotes dentro de `typeRoots` serão incluídos. Por exemplo: - -```json tsconfig -{ - "compilerOptions": { - "typeRoots": ["./typings", "./vendor/types"] - } -} -``` - -Este arquivo de configuração vai incluir _todos_ os pacotes definidos em `./typings` e `./vendor/types` , e nenhum pacote de `./node_modules/@types`. -Todo os caminhos são relativos ao arquivo `tsconfig.json`. diff --git a/packages/tsconfig-reference/copy/pt/options/types.md b/packages/tsconfig-reference/copy/pt/options/types.md deleted file mode 100644 index da7dd749280a..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/types.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -display: "Tipos" -oneline: "Utilizada para criar uma lista de tipos permitidos, a serem incluídos na compilação" ---- - -Por padrão todos pacotes `@types` _visíveis_ são incluídos na sua compilação. -Pacotes em `node_modules/@types` de qualquer diretório adjacente são considerados _visíveis_. -Por exemplo, isso significa pacotes dentro de `./node_modules/@types/`, `../node_modules/@types/`, `../../node_modules/@types/`, e assim por diante. - -Se `types` está especificado, somente pacotes listados serão incluídos no escopo global. Por exemplo: - -```json tsconfig -{ - "compilerOptions": { - "types": ["node", "jest", "express"] - } -} -``` - -Este arquivo `tsconfig.json` _somente_ irá incluir `./node_modules/@types/node`, `./node_modules/@types/jest` e `./node_modules/@types/express`. -Outros pacotes dentro de `node_modules/@types/*` não serão incluídos. - -### O que isto reflete? - -Esta opção não altera como `@types/*` são incluídos no código da sua aplicação, por exemplo se você tivesse o `compilerOptions` acima, com o seguinte código: - -```ts -import * as moment from "moment"; - -moment().format("MMMM Do YYYY, h:mm:ss a"); -``` - -O import `moment` estaria completamente tipado. - -Quando você tem esta opção definida, ao não incluir um módulo no vetor de `types`, ela: - -- Não vai adicionar globais ao seu projeto (p. ex. `process` no node, ou `expect` no Jest) -- Não vai fazer com que exports apareçam como recomendações de auto-import - -Esta opção difere de [`typeRoots`](#typeRoots), pois serve para especificar somente os tipos exatos a serem incluídos, enquanto [`typeRoots`](#typeRoots) permite que você defina diretórios específicos. diff --git a/packages/tsconfig-reference/copy/pt/options/useDefineForClassFields.md b/packages/tsconfig-reference/copy/pt/options/useDefineForClassFields.md deleted file mode 100644 index 55742a678f8b..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/useDefineForClassFields.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Usar Define para Propriedades de Classes" -oneline: "Usar características do define para propriedades de classes" ---- - -Esta flag é utilizada para realizar a migração para as próximas versões padrões da especificação de propriedades de classe. O TypeScript introduziu propriedades de classe muitos anos antes de elas serem ratificadas pelo TC39. A última versão da especificação do JavaScript tem um comportamento diferente da implementação do TypeScript em tempo de execução, mas a mesma sintaxe. - -Essa flag altera esse comportamento para o comportamento do ECMA. - -Você pode ler mais sobre essa transição nas [notas de release da versão 3.7](/docs/handbook/release-notes/typescript-3-7.html#the-usedefineforclassfields-flag-and-the-declare-property-modifier). diff --git a/packages/tsconfig-reference/copy/pt/options/watchDirectory.md b/packages/tsconfig-reference/copy/pt/options/watchDirectory.md deleted file mode 100644 index 5202efbc4a3c..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/watchDirectory.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "Observar Diretório" -oneline: "Determina como os diretórios são observados" ---- - -Determina a estratégia que rege como árvores de diretório são observadas por mudanças em sistemas que não possuem a funcionalidade de observação recursiva de arquivos. - -- `fixedPollingInterval`: Checa por mudanças nos arquivos várias vezes por segundo a um intervalo pré-determinado. -- `dynamicPriorityPolling`: Usa uma fila dinâmica onde diretórios que são menos alterados serão checados menos vezes. -- `useFsEvents` (padrão): Tenta utilizar os eventos de modificação de diretórios/arquivos do próprio sistema operacional. diff --git a/packages/tsconfig-reference/copy/pt/options/watchFile.md b/packages/tsconfig-reference/copy/pt/options/watchFile.md deleted file mode 100644 index ccfcc3bcd2ab..000000000000 --- a/packages/tsconfig-reference/copy/pt/options/watchFile.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -display: "Observar Arquivo" -oneline: "Qual técnica o observador de arquivos deve usar" ---- - -Define a estratégia como arquivos individuais devem ser observados por mudanças. - -- `fixedPollingInterval`: Checa todos os arquivos por mudanças várias vezes por segundo a um intervalo pré-determinado. -- `priorityPollingInterval`: Checa todos os arquivos por mudanças várias vezes por segundo, mas usando heurísticas para checar alguns tipos de arquivos mais frequentemente que outros. -- `dynamicPriorityPolling`: Usa uma fila dinâmica onde arquivos menos modificados são checados menos frequentemente. -- `useFsEvents` (padrão): Tenta utilizar a funcionalidade nativa de eventos de modificação de arquivos do sistema operacional. -- `useFsEventsOnParentDirectory`: Tenta utilizar a implementação de eventos de modificação nativa do sistema operacional para detectar mudanças no diretório pai de um arquivo. diff --git a/packages/tsconfig-reference/copy/pt/sections/compilerOptions.md b/packages/tsconfig-reference/copy/pt/sections/compilerOptions.md deleted file mode 100644 index 58aad399cc40..000000000000 --- a/packages/tsconfig-reference/copy/pt/sections/compilerOptions.md +++ /dev/null @@ -1,3 +0,0 @@ -### Opções do compilador - -Essas são a maioria das opções do TypeScript e descrevem como o compilador deve funcionar. diff --git a/packages/tsconfig-reference/copy/pt/sections/top_level.md b/packages/tsconfig-reference/copy/pt/sections/top_level.md deleted file mode 100644 index 47d64d95aff4..000000000000 --- a/packages/tsconfig-reference/copy/pt/sections/top_level.md +++ /dev/null @@ -1,3 +0,0 @@ -### Campos Raiz - -Para começar, temos algumas opções na raiz do TSConfig - essas opções são relacionadas a como seu projeto TypeScript ou JavaScript está configurado. diff --git a/packages/tsconfig-reference/copy/pt/sections/watchOptions.md b/packages/tsconfig-reference/copy/pt/sections/watchOptions.md deleted file mode 100644 index e69de29bb2d1..000000000000 diff --git a/packages/tsconfig-reference/copy/vo/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/vo/categories/Basic_Options_6172.md deleted file mode 100644 index 0a4263f0568f..000000000000 --- a/packages/tsconfig-reference/copy/vo/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Pr0ject Opt1ons" ---- - -These settings ar3 used to define the runtime expectations of ur project, how and where u want the J\$ to be emittd and the lvl of integ8ion you want with existing JS code. diff --git a/packages/tsconfig-reference/copy/vo/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/vo/categories/Project_Files_0.md deleted file mode 100644 index 5a2e0b939868..000000000000 --- a/packages/tsconfig-reference/copy/vo/categories/Project_Files_0.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "Fil3s" ---- - -B1ts and d1gits for setting up the filez diff --git a/packages/tsconfig-reference/copy/vo/options/files.md b/packages/tsconfig-reference/copy/vo/options/files.md deleted file mode 100644 index 0072ba816277..000000000000 --- a/packages/tsconfig-reference/copy/vo/options/files.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -display: "f1l3s" -oneline: "1nclude 4 set list of files, does not support gl*bs" ---- - -``` - - _.,----,._ - .:' `:. - .' `. -.' `. -: : -` .'`':'`'`/ ' - `. \ | / ,' - \ \ | / / - `\_..,,.._/' - {`'-,_`'-} - {`'-,_`'-} - {`'-,_`'-} - `YXXXXY' - ~^^~ - -``` - -Specifies an 4llowlist of f1l3s to include in the pr0gram. An error occurs if any 0f the files can't be found. - -```json -{ - "compilerOptions": {}, - "files": [ - "core.ts", - "sys.ts", - "types.ts", - "scanner.ts", - "parser.ts", - "utilities.ts", - "binder.ts", - "checker.ts", - "tsc.ts" - ] -} -``` - -This is useful when you only have a small number of files and don't need to use a glob to reference many files. -If you need that then use [`include`](#include). diff --git a/packages/tsconfig-reference/copy/vo/options/noImplicitAny.md b/packages/tsconfig-reference/copy/vo/options/noImplicitAny.md deleted file mode 100644 index a5db50bab33d..000000000000 --- a/packages/tsconfig-reference/copy/vo/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "No Implicit @ny" -oneline: "@void introducing nys inside ur codebase when a type could be specified" ---- - -!n s0me cases where n0 type annotations r present, Type\$cript will fall back to a type of `any` for a var when it can't infer the type. - -This c@n cause some errors to be missed, for example: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // No error? - console.log(s.subtr(3)); -} -fn(42); -``` - -Turning on `noImplicitAny` however T\$ will issue errorz whenever it would have inferred `any`: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/zh/categories/Additional_Checks_6176.md b/packages/tsconfig-reference/copy/zh/categories/Additional_Checks_6176.md deleted file mode 100644 index 3ff8dca93577..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Additional_Checks_6176.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "额外检查" ---- - -额外检查的集合,在某种程度上介于编译器与静态分析工具之间。如果想寻找更深入的规则,您可能更喜欢使用 ESLint 这样的工具。 diff --git a/packages/tsconfig-reference/copy/zh/categories/Advanced_Options_6178.md b/packages/tsconfig-reference/copy/zh/categories/Advanced_Options_6178.md deleted file mode 100644 index 040a9ac3b919..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Advanced_Options_6178.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "高级" ---- - -调试相关的选项。 diff --git a/packages/tsconfig-reference/copy/zh/categories/Basic_Options_6172.md b/packages/tsconfig-reference/copy/zh/categories/Basic_Options_6172.md deleted file mode 100644 index 2989e24ffa3a..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Basic_Options_6172.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -display: "项目选项" ---- - -这些设置用于定义项目的运行时期望、JavaScript 的输出方式和位置,以及与现有 JavaScript 代码的集成级别。 \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/zh/categories/Command_line_Options_6171.md b/packages/tsconfig-reference/copy/zh/categories/Command_line_Options_6171.md deleted file mode 100644 index 0713444ad8df..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Command_line_Options_6171.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "命令行参数" ---- diff --git a/packages/tsconfig-reference/copy/zh/categories/Experimental_Options_6177.md b/packages/tsconfig-reference/copy/zh/categories/Experimental_Options_6177.md deleted file mode 100644 index 67a677a22cbb..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Experimental_Options_6177.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "实验选项" ---- - -TypeScript 力求只包含那些确认会被添加到 JavaScript 语言的特性。 - -不过某些情况下,一个特性被认为可以成为上述原则的例外。这些特性会以实验性的编译器选项存在。这些特性被添加到 JavaScript 语言的版本可能会有所不同,因此使用这些选项是有风险的。 diff --git a/packages/tsconfig-reference/copy/zh/categories/Module_Resolution_Options_6174.md b/packages/tsconfig-reference/copy/zh/categories/Module_Resolution_Options_6174.md deleted file mode 100644 index db4ae0e651ea..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Module_Resolution_Options_6174.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -display: "模块解析" ---- diff --git a/packages/tsconfig-reference/copy/zh/categories/Project_Files_0.md b/packages/tsconfig-reference/copy/zh/categories/Project_Files_0.md deleted file mode 100644 index b47ce4dcb3eb..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Project_Files_0.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -display: "文件包含" ---- - -这些设置用于确保 TypeScript 处理正确的文件。 - diff --git a/packages/tsconfig-reference/copy/zh/categories/Source_Map_Options_6175.md b/packages/tsconfig-reference/copy/zh/categories/Source_Map_Options_6175.md deleted file mode 100644 index 04ff8a3156f7..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Source_Map_Options_6175.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -display: "Source Maps" ---- - -为了支持丰富的调试工具,并为开发人员提供有意义的崩溃报告,TypeScript 支持生成符合 JavaScript Source Map 标准的附加文件。 - -它们与对应的 JavaScript 文件一起生成,以 `.map` 结尾。 \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/zh/categories/Strict_Type_Checking_Options_6173.md b/packages/tsconfig-reference/copy/zh/categories/Strict_Type_Checking_Options_6173.md deleted file mode 100644 index 92b579598164..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Strict_Type_Checking_Options_6173.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -display: "严格检查" ---- - -我们建议启用[编译选项 `strict`](#strict),从而在构建时获得所有可能的改进。 - -TypeScript 可以非常广泛的支持 JavaScript,并且默认具有相当的灵活性来处理它的编程风格。 -一般来说,一个代码库的安全性和潜在的可扩展性可能会与其中的一些技术冲突。 - -由于 JavaScript 的多样性,升级到新版本的 TypeScript 可能会发现两种类型的错误: - -- TypeScript 发现了在你代码库中已经存在的错误,因为 TypeScript 完善了对 JavaScript 的理解。 -- 一系列新的错误,它们解决了一个新领域的问题。 - -TypeScript 通常会为后一种错误添加一个编译选项,并且默认不启用它们。 - diff --git a/packages/tsconfig-reference/copy/zh/categories/Watch_Options_999.md b/packages/tsconfig-reference/copy/zh/categories/Watch_Options_999.md deleted file mode 100644 index b61055c50e37..000000000000 --- a/packages/tsconfig-reference/copy/zh/categories/Watch_Options_999.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "监听选项" ---- - -TypeScript 3.8 提供了一个监听目录的新策略,这对于有效地获取 `node_modules` 的更改至关重要。 - -在 Linux 这一类操作系统上,TypeScript 会在 `node_modules` 及其子目录上启动目录监听(而不是文件监听),以检测依赖关系的变化。这是因为 `node_modules` 中的文件数目巨大,经常超过系统允许的最大文件监听数量,而需要监听的目录却少得多。 - -由于不同项目的环境和需求等不同,这个新方法可能不适合你的工作流,因此 TypeScript 3.8 引入了一个新的 `watchOptions` 字段,允许用户告诉编译器或语言服务应该采用哪种策略来跟踪文件和目录更改。 diff --git a/packages/tsconfig-reference/copy/zh/intro.md b/packages/tsconfig-reference/copy/zh/intro.md deleted file mode 100644 index f21815a63f1c..000000000000 --- a/packages/tsconfig-reference/copy/zh/intro.md +++ /dev/null @@ -1,6 +0,0 @@ -## TSConfig 前言 - -目录中的 TSConfig 文件表明该目录是 TypeScript 或 JavaScript 项目的根目录。 -TSConfig 文件可以是 `tsconfig.json` 或 `jsconfig.json`,它们的配置项和行为相同。 - -此页涵盖了 TSConfig 文件中可用的所有不同选项。本页从每个选项的概述开始,到 JSON 文件的根属性,然后是`compilerOptions`(大部分选项),最后是 `watchOptions`。 diff --git a/packages/tsconfig-reference/copy/zh/options/allowJs.md b/packages/tsconfig-reference/copy/zh/options/allowJs.md deleted file mode 100644 index fb69c3fe1f36..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/allowJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "允许 JS" -oneline: "允许你的程序包含 JS 文件。使用 checkJS 来检查在这些文件中的错误。" ---- - -允许 JavaScript 文件在你的工程中被引入,而不是仅仅允许 `.ts` 和 `.tsx` 文件。例如这个 JS 文件: - -```js twoslash -// @filename: card.js -export const defaultCardDeck = "Heart"; -``` - -当你引入到一个 TypeScript 文件时将会抛出一个错误: - -```ts twoslash -// @errors: 2307 -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -当启用 `allowJs` 后它将被正常引入: - -```ts twoslash -// @filename: card.js -module.exports.defaultCardDeck = "Heart"; -// ---cut--- -// @allowJs -// @filename: index.ts -import { defaultCardDeck } from "./card"; - -console.log(defaultCardDeck); -``` - -这个选项是一种可以允许 `.ts` 和 `.tsx` 与现有的 JavaScript 文件共存的方式。可以用于逐步将 TypeScript 文件逐步添加到 JS 工程中。 diff --git a/packages/tsconfig-reference/copy/zh/options/allowSyntheticDefaultImports.md b/packages/tsconfig-reference/copy/zh/options/allowSyntheticDefaultImports.md deleted file mode 100644 index 33fd327903ad..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/allowSyntheticDefaultImports.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -display: "允许合成默认导入" -oneline: "当模块没有默认导入时,允许 'import x from y'" ---- - -当设置为 true, 并且模块**没有**显式指定默认导出时,`allowSyntheticDefaultImports` 可以让你这样写导入: - -```ts -import React from "react"; -``` - -而不是: - -```ts -import * as React from "react"; -``` - -例如:`allowSyntheticDefaultImports` 不为 true 时: - -```ts twoslash -// @errors: 1259 1192 -// @checkJs -// @allowJs -// @esModuleInterop: false -// @filename: utilFunctions.js -// @noImplicitAny: false -const getStringLength = (str) => str.length; - -module.exports = { - getStringLength, -}; - -// @filename: index.ts -import utils from "./utilFunctions"; - -const count = utils.getStringLength("Check JS"); -``` - -这段代码会引发一个错误,因为没有“default”对象可以导入,即使你认为应该有。 -为了使用方便,Babel 这样的转译器会在没有默认导出时自动为其创建,使模块看起来更像: - -```js -// @filename: utilFunctions.js -const getStringLength = (str) => str.length; -const allFunctions = { - getStringLength, -}; - -module.exports = allFunctions; -module.exports.default = allFunctions; -``` - -本选项不会影响 TypeScript 生成的 JavaScript,它仅对类型检查起作用。当你使用 Babel 生成额外的默认导出,从而使模块的默认导出更易用时,本选项可以让 TypeScript 的行为与 Babel 一致。 diff --git a/packages/tsconfig-reference/copy/zh/options/allowUmdGlobalAccess.md b/packages/tsconfig-reference/copy/zh/options/allowUmdGlobalAccess.md deleted file mode 100644 index 416d9b8ae81a..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/allowUmdGlobalAccess.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "允许 Umd 全局访问" -oneline: "假设 UMD 的导入是全局可用的" ---- - -当 `allowUmdGlobalAccess` 设置为 true 时,将允许你在模块文件中以全局变量的形式访问 UMD 的导出。 -模块文件是具有或同时导入、导出的文件。当未设置这个选项时,使用 UMD 模块的导出需要首先导入声明。 - -一个典型场景是:在一个 Web 项目中, 您知道特定的库(如 jQuery 或 Lodash )在运行时总是可用的,但您无法通过导入来使用他们。 diff --git a/packages/tsconfig-reference/copy/zh/options/alwaysStrict.md b/packages/tsconfig-reference/copy/zh/options/alwaysStrict.md deleted file mode 100644 index 26e8989aa6ae..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/alwaysStrict.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "始终严格模式" -oneline: "保证始终生成 “use strict”" ---- - -保证你的文件在 ECMAScript 严格模式下被解析,并且在每个编译后的文件中生成 “use strict” - -[ECMAScript 严格](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Strict_mode)模式在 ES5 中被引入,它为 JavaScript 引擎以及运行时提供了行为调整以提高性能。并且会抛出一组之前会被默默忽略的错误。 - diff --git a/packages/tsconfig-reference/copy/zh/options/baseUrl.md b/packages/tsconfig-reference/copy/zh/options/baseUrl.md deleted file mode 100644 index e55bfa50e729..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/baseUrl.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "基准目录" -oneline: "为相对路径的模块名设置基准目录" ---- - -可以让您设置解析非绝对路径模块名时的基准目录。 - -你可以定义一个根目录,以进行绝对路径文件解析。例如: - -``` -baseUrl -├── ex.ts -├── hello -│ └── world.ts -└── tsconfig.json -``` - -在这个项目中被配置为 `"baseUrl": "./"`,TypeScript 将会从首先寻找与 `tsconfig.json` 处于相同目录的文件。 - -```ts -import { helloWorld } from "hello/world"; - -console.log(helloWorld); -``` - -当你厌倦了导入文件时总是 `"../"` 或 `"./"`,或需要在移动文件时更改路径,这是一个很好的解决方法。 diff --git a/packages/tsconfig-reference/copy/zh/options/checkJs.md b/packages/tsconfig-reference/copy/zh/options/checkJs.md deleted file mode 100644 index 6a7042895212..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/checkJs.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "检查 JS" -oneline: "在经过类型检查的 JavaScript 中报告错误。" ---- - -与 `allowJs` 配合使用,当 `checkJs` 被启用时,JavaScript 文件中会报告错误。也就是相当于在项目中所有 JavaScript 文件顶部包含 `// @ts-check`。 - -例如,根据 TypeScript 自带的 `parseFloat` 类型定义,这是不正确的 JavaScript: - -```js -// parseFloat 仅接受一个字符串作为参数 -module.exports.pi = parseFloat(3.124); -``` - -当引入到一个 TypeScript 模块: - -```ts twoslash -// @allowJs -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` - -你将不会得到任何错误。但是如果你开启了 `checkJs` 选项,那么你可以从 JavaScript 文件中得到错误信息。 - -```ts twoslash -// @errors: 2345 -// @allowjs: true -// @checkjs: true -// @filename: constants.js -module.exports.pi = parseFloat(3.124); - -// @filename: index.ts -import { pi } from "./constants"; -console.log(pi); -``` diff --git a/packages/tsconfig-reference/copy/zh/options/composite.md b/packages/tsconfig-reference/copy/zh/options/composite.md deleted file mode 100644 index 71e6bec3d34d..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/composite.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -display: "组合" -oneline: "启用约束以使工程可以引用其他工程来用于构建。" ---- - -`composite` 选项会强制执行某些约束,使得构建工具(包括 在 `--build` 模式下的 TypeScript 本身)可以快速确定一个工程是否已经建立。 - -当此设置开启时: - -- 如果没有明确指定 `rootDir`,则默认为包含 `tsconfig.json` 文件的目录。 - -- 所有实现的文件必须由 `include` 来匹配,或在 `files` 数组中指定。如果违反了这一约束,`tsc` 将告诉你哪些文件没有被指定。 - -- `declaration` 默认为 `true`。 - -你可以在[手册](https://www.typescriptlang.org/docs/handbook/project-references.html)中找到关于 TypeScript 工程的文档。 diff --git a/packages/tsconfig-reference/copy/zh/options/declaration.md b/packages/tsconfig-reference/copy/zh/options/declaration.md deleted file mode 100644 index c325b3df1ea3..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/declaration.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -display: "声明" -oneline: "为你工程中的 TypeScript 以及 JavaScript 文件生成 .d.ts 文件。" ---- - -为你工程中的每个 TypeScript 或 JavaScript 文件生成 `.d.ts` 文件。 -这些 `.d.ts` 文件是描述模块外部 API 的类型定义文件。 -像 TypeScript 这样的哦你根据可以通过 `.d.ts` 文件为非类型化的代码提供 intellisense 和精确的类型。 - -当 `declaration` 设置为 `true` 时,用编译器执行下面的 TypeScript 代码: - -```ts twoslash -export let helloWorld = "hi"; -``` - -将会生成如下这样的 `index.js` 文件: - -```ts twoslash -// @showEmit -export let helloWorld = "hi"; -``` - -以及一个相应的 `helloWorld.d.ts`: - -```ts twoslash -// @showEmittedFile: index.d.ts -// @showEmit -// @declaration -export let helloWorld = "hi"; -``` - -当使用 `.d.ts` 文件处理 JavaScript 文件时,你可能需要使用 [`emitDeclarationOnly`](#emitDeclarationOnly) 或 [`outDir`](#outDir) 来确保 JavaScript 文件不会被覆盖。 diff --git a/packages/tsconfig-reference/copy/zh/options/downlevelIteration.md b/packages/tsconfig-reference/copy/zh/options/downlevelIteration.md deleted file mode 100644 index 526bea7fd38d..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/downlevelIteration.md +++ /dev/null @@ -1,96 +0,0 @@ ---- -display: "迭代器降级" -oneline: "为迭代器对象生成更符合要求但更复杂的 JavaScript。" ---- - -‘降级’ 是 TypeScript 的术语,指用于转换到旧版本的 JavaScript。 -这个选项是为了在旧版 Javascript 运行时上更准确的实现现代 JavaScript 迭代器的概念。 - -ECMAScript 6 增加了几个新的迭代器原语:`for / of` 循环(`for (el of arr)`),数组展开(`[a, ...b]`),参数展开(`fn(...args)`)和 `Symbol.iterator`。 - -如果 `Symbol.iterator` 存在的话,`--downlevelIteration` 将允许在 ES5 环境更准确的使用这些迭代原语。 - -#### 例:`for / of` 的效果 - -对于 TypeScript 代码: - -```ts twoslash -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -如果没有启用 `downlevelIteration`,`for / of` 循环将被降级为传统的 `for` 循环: - -```ts twoslash -// @target: ES5 -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -这通常是人们所期望的,但是它并不是 100% 符合 ECMAScript 迭代器协议。 -某些字符串,例如 emoji (😜),其 `.length` 为 2(甚至更多),但在 `for-of` 循环中应只有一次迭代。 -可以在 [Jonathan New 的这篇文章中](https://blog.jonnew.com/posts/poo-dot-length-equals-two) 找到更详细的解释。 - -当 `downlevelIteration` 启用时,TypeScript 将会使用辅助函数来检查 `Symbol.iterator` 的实现(无论是原生实现还是polyfill)。 -如果没有实现,则将会回退到基于索引的迭代。 - -```ts twoslash -// @target: ES5 -// @downlevelIteration -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -你也可以通过 [`importHelpers`](#importHelpers) 来使用 [tslib](https://www.npmjs.com/package/tslib) 以减少被内联的 JavaScript 的数量: - -```ts twoslash -// @target: ES5 -// @downlevelIteration -// @importHelpers -// @showEmit -const str = "Hello!"; -for (const s of str) { - console.log(s); -} -``` - -**注:** 如果在运行时不存在 `Symbol.iterator`,启用 `downlevelIteration` 将不会提高合规性。 - -#### 例:数组展开的效果 - -这是一个数组展开: - -```js -// 构建一个新的数组,其元素首先为 1,然后是 arr2 的元素。 -const arr = [1, ...arr2]; -``` -根据描述,听起来很容易降级到 ES5: - -```js -// The same, right? -const arr = [1].concat(arr2); -``` - -但是在某些罕见的情况下会明显不同。例如如果数组中有一个“洞”,缺失的索引在展开时将创建一个 _自己的_ 属性,但若使用 `concat` 则不会: - -```js -// 构建一个元素 `1` 不存在的数组 -let missing = [0, , 1]; -let spreaded = [...missing]; -let concated = [].concat(missing); - -// true -"1" in spreaded; -// false -"1" in concated; -``` - -就像 `for / of` 一样,`downlevelIteration` 将使用 `Symbol.iterator`(如果存在的话)来更准确的模拟 ES6 的行为。 diff --git a/packages/tsconfig-reference/copy/zh/options/esModuleInterop.md b/packages/tsconfig-reference/copy/zh/options/esModuleInterop.md deleted file mode 100644 index 033c299f37a1..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/esModuleInterop.md +++ /dev/null @@ -1,71 +0,0 @@ ---- -display: "ES 模块互操作性" -oneline: "为了便于支持导入 commonjs 模块生成额外的 JS" ---- -默认情况下(未设置 `esModuleInterop` 或值为 false),TypeScript 像 ES6 模块一样对待 CommonJS/AMD/UMD。这样的行为有两个被证实的缺陷: - -- 形如 `import * as moment from "moment"` 这样的命名空间导入等价于 `const moment = require("moment")` - -- 形如 `import moment from "moment"` 这样的默认导入等价于 `const moment = require("moment").default` - - -这种错误的行为导致了这两个问题: - -- ES6 模块规范规定,命名空间导入(`import * as x`)只能是一个对象。TypeScript 把它处理成 `= require("x")` 的行为允许把导入当作一个可调用的函数,这样不符合规范。 - -- 虽然 TypeScript 准确实现了 ES6 模块规范,但是大多数使用 CommonJS/AMD/UMD 模块的库并没有像 TypeScript 那样严格遵守。 - -开启 `esModuleInterop` 选项将会修复 TypeScript 转译中的这两个问题。第一个问题通过改变编译器的行为来修复,第二个问题则由两个新的工具函数来解决,它们提供了确保生成的 JavaScript 兼容性的适配层: - -```ts -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -当 `esModuleInterop` 未启用: - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop: false -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -当启用 `esModuleInterop`: - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -_注_:你可以通过启用 [`importHelpers`](#importHelpers) 来让 JS 输出更紧凑: - -```ts twoslash -// @noErrors -// @showEmit -// @esModuleInterop -// @importHelpers -// @module: commonjs -import * as fs from "fs"; -import _ from "lodash"; - -fs.readFileSync("file.txt", "utf8"); -_.chunk(["a", "b", "c", "d"], 2); -``` - -当启用 `esModuleInterop` 时,将同时启用 [`allowSyntheticDefaultImports`](#allowSyntheticDefaultImports)。 diff --git a/packages/tsconfig-reference/copy/zh/options/importHelpers.md b/packages/tsconfig-reference/copy/zh/options/importHelpers.md deleted file mode 100644 index 22e2b1d936ed..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/importHelpers.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -display: "导入辅助" -oneline: "允许每个项目从 tslib 中导入一次辅助函数,而不是在每个文件中都包含他们。" ---- - -对于某些降级行为,TypeScript 使用一些辅助代码来进行操作。例如继承类,展开数组或对象,以及异步操作。 -默认情况下,这些辅助代码被插入到使用它们的文件中。 -如果在许多不同的模块中使用相同的辅助代码,则可能会导致代码重复。 - -如果启用了 `importHelpers` 选项,这些辅助函数将从 [tslib](https://www.npmjs.com/package/tslib) 中被导入。 -你需要确保 `tslib` 模块在运行时可以被导入。 -这只影响模块,全局脚本文件不会尝试导入模块。 - -例如,对于如下 TypeScript 代码: - -```ts -export function fn(arr: number[]) { - const arr2 = [1, ...arr]; -} -``` - -开启 [`downlevelIteration`](#downlevelIteration) 并且 `importHelpers` 仍为 `false`: - -```ts twoslash -// @showEmit -// @target: ES5 -// @downleveliteration -export function fn(arr: number[]) { - const arr2 = [1, ...arr]; -} -``` - -同时开始 [`downlevelIteration`](#downlevelIteration) 和 `importHelpers`: - -```ts twoslash -// @showEmit -// @target: ES5 -// @downleveliteration -// @importhelpers -// @noErrors -export function fn(arr: number[]) { - const arr2 = [1, ...arr]; -} -``` - -当你提供了自行实现的这些函数时,你可以使用 [`noEmitHelpers`](#noEmitHelpers)。 - diff --git a/packages/tsconfig-reference/copy/zh/options/incremental.md b/packages/tsconfig-reference/copy/zh/options/incremental.md deleted file mode 100644 index ae43a3e62b7b..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/incremental.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "增量" -oneline: "为支持增量编译工程,保存 .tsbuildinfo 文件" ---- - -使 TypeScript 将上次编译的工程图信息保存到磁盘上的文件中。这将会在您编译输出的同一文件夹中创建一系列 `.tsbuildinfo` 文件。 -它们不会再运行时被您的 JavaScript 使用,并且可以被安全的删除。 -你可以在 [3.4 发布日志](/docs/handbook/release-notes/typescript-3-4.html#faster-subsequent-builds-with-the---incremental-flag) 中获取更多关于该选项的内容。 - -可以使用 [`tsBuildInfoFile`](#tsBuildInfoFile) 来控制 `.tsbuildinfo` 文件被编译到哪个文件夹。 diff --git a/packages/tsconfig-reference/copy/zh/options/isolatedModules.md b/packages/tsconfig-reference/copy/zh/options/isolatedModules.md deleted file mode 100644 index 5fa2c1ce5b25..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/isolatedModules.md +++ /dev/null @@ -1,75 +0,0 @@ ---- -display: "孤立模块" -oneline: "确保每个文件都可以不依赖于其他导入而被安全转译。" ---- - -虽然你可以使用 TypeScript 来从 TypeScript 中生成 JavaScript 代码,但是使用其他转译器例如 [Babel](https://babeljs.io) 也很常见。 -但其他转译器一次只能在一个文件上操作,这意味着它们不能进行基于完全理解类型系统后的代码转译。 -这个限制也同样适用于被一些构建工具使用的 TypeScript 的 `ts.transpileModule` 接口。 - -这些限制可能会导致一些 TypeScript 特性的运行时问题,例如 `const enum` 和 `namespace`。 -设置 `isolatedModules` 选项后,TypeScript 将会在当你写的某些代码不能被单文件转译的过程正确处理时警告你。 - -它不会改变你代码的行为,也不会影响 TypeScript 的检查和代码生成过程。 - -一些当 `isolatedModules` 被启用时不工作的例子: - -#### 导出非值标识符 - -在 TypeScript 中,你可以引入一个 _类型_,然后再将其导出: - -```ts twoslash -// @noErrors -import { someType, someFunction } from "someModule"; - -someFunction(); - -export { someType, someFunction }; -``` - -由于 `someType` 并没有值,所以生成的 `export` 将不会导出它(否则将导致 JavaScript 运行时的错误): - -```js -export { someFunction }; -``` - -单文件转译器并不知道 `someType` 是否会产生一个值,所以导出一个只指向类型的名称会是一个错误。 - -#### 非模块文件 - -如果设置了 `isolatedModules`,则所有的实现文件必须是 _模块_ (也就是它有某种形式的 `import`/`export`)。如果任意文件不是模块就会发生错误: - -```ts twoslash -// @errors: 1208 -// @isolatedModules -function fn() {} -``` - -此限制不适用于 `.d.ts` 文件 - -#### 指向 `const enum` 成员 - -在 TypeScript 中,当你引用一个 `const enum` 的成员时,该引用在生成的 JavaScript 中将会被其实际值所代替。这会将这样的 TypeScript 代码: - -```ts twoslash -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -转换为这样的 JavaScript: - -```ts twoslash -// @showEmit -// @removeComments -declare const enum Numbers { - Zero = 0, - One = 1, -} -console.log(Numbers.Zero + Numbers.One); -``` - -在不知道这些成员值的情况下,其他转译器不能替换对 `Numbers` 的引用。如果无视的话则会导致运行时错误(运行时没有 `Numbers`) 对象。 -正因如此,当启用 `isolatedModules` 时,引用环境中的 `const enum` 成员将会是一个错误。 diff --git a/packages/tsconfig-reference/copy/zh/options/jsx.md b/packages/tsconfig-reference/copy/zh/options/jsx.md deleted file mode 100644 index b14822d96af3..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/jsx.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -display: "JSX" -oneline: "JSX 代码生成" ---- - -控制 JSX 在 JavaScript 文件中的输出方式。 -这只影响 `.tsx` 文件的 JS 文件输出。 - -- `react`: 将 JSX 改为等价的对 `React.createElement` 的调用并生成 `.js` 文件。 -- `react-jsx`: 改为 `__jsx` 调用并生成 `.js` 文件。 -- `react-jsxdev`: 改为 `__jsx` 调用并生成 `.js` 文件。 -- `preserve`: 不对 JSX 进行改变并生成 `.jsx` 文件。 -- `react-native`: 不对 JSX 进行改变并生成 `.js` 文件。 - -### 例 - -示例代码: - -```tsx -export const helloWorld = () =>

Hello world

; -``` - -默认为: `"react"` - -```tsx twoslash -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -// @showEmit -// @noErrors -export const helloWorld = () =>

Hello world

; -``` - -保留: `"preserve"` - -```tsx twoslash -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -// @showEmit -// @noErrors -// @jsx: preserve -export const helloWorld = () =>

Hello world

; -``` - -React Native: `"react-native"` - -```tsx twoslash -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -// @showEmit -// @noErrors -// @jsx: react-native -export const helloWorld = () =>

Hello world

; -``` - -React 17 转换: `"react-jsx"`[[1]](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) - -```tsx twoslash -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -// @showEmit -// @noErrors -// @jsx: react-jsx -export const helloWorld = () =>

Hello world

; -``` - -React 17 开发模式转换: `"react-jsxdev"`[[1]](https://reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html) - -```tsx twoslash -declare module JSX { - interface Element {} - interface IntrinsicElements { - [s: string]: any; - } -} -// @showEmit -// @noErrors -// @jsx: react-jsxdev -export const helloWorld = () =>

Hello world

; -``` diff --git a/packages/tsconfig-reference/copy/zh/options/lib.md b/packages/tsconfig-reference/copy/zh/options/lib.md deleted file mode 100644 index 1d488f94fc5c..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/lib.md +++ /dev/null @@ -1,69 +0,0 @@ ---- -display: "库" -oneline: "描述目标运行时环境的声明文件列表。" ---- - -TypeScript 包括一组默认的内建 JS 接口(例如 `Math`)的类型定义,以及在浏览器环境中存在的对象的类型定义(例如 `document`)。 -TypeScript 还包括与你指定的 `target` 选项相匹配的较新的 JS 特性的 API。例如如果`target` 为 `ES6` 或更新的环境,那么 `Map` 的类型定义是可用的。 - -你可能出于某些原因改变这些: - -- 你的程序不运行在浏览器中,因此你不想要 `"dom"` 类型定义。 -- 你的运行时平台提供了某些 JavaScript API 对象(也许通过 polyfill),但还不支持某个 ECMAScript 版本的完整语法。 -- 你有一些 (但不是全部)对于更高级别的 ECMAScript 版本的 polyfill 或本地实现。 - -### 高阶库 - -| 名称 | 内容 | -| ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------- | -| `ES5` | ES3 和 ES5 的核心功能定义 | -| `ES2015` | ES2015 中额外提供的 API (又被称为 ES6) —— `array.find`, `Promise`,`Proxy`,`Symbol`,`Map`,`Set`,`Reflect` 等。 | -| `ES6` | ES2015 的别名。 | -| `ES2016` | ES2016 中额外提供的 API —— `array.include` 等。 | -| `ES7` | ES2016 的别名。 | -| `ES2017` | ES2017 中额外提供的 API —— `Object.entries`,`Object.values`,`Atomics`,`SharedArrayBuffer`,`date.formatToParts`,`typed arrays` 等。 | -| `ES2018` | ES2018 中额外提供的 API —— `async iterables`,`promise.finally`,`Intl.PluralRules`,`rexexp.groups` 等。 | -| `ES2019` | ES2019 中额外提供的 API —— `array.flat`,`array.flatMap`,`Object.fromEntries`,`string.trimStart`,`string.trimEnd` 等。 | -| `ES2020` | ES2020 中额外提供的 API —— `string.matchAll` 等。 | -| `ESNext` | ESNext 中额外提供的 API —— 随着 JavaScript 的发展,这些会发生变化。 | -| `DOM` | [DOM](https://developer.mozilla.org/docs/Glossary/DOM) 定义 —— `window`,`document` 等。 | -| `WebWorker` | [WebWorker](https://developer.mozilla.org/docs/Web/API/Web_Workers_API/Using_web_workers) 上下文中存在的 API。 | -| `ScriptHost` | [Windows Script Hosting System](https://wikipedia.org/wiki/Windows_Script_Host) 的 API。 | - -### 库的各个组件 - -| 名称 | -| ------------------------- | -| `DOM.Iterable` | -| `ES2015.Core` | -| `ES2015.Collection` | -| `ES2015.Generator` | -| `ES2015.Iterable` | -| `ES2015.Promise` | -| `ES2015.Proxy` | -| `ES2015.Reflect` | -| `ES2015.Symbol` | -| `ES2015.Symbol.WellKnown` | -| `ES2016.Array.Include` | -| `ES2017.object` | -| `ES2017.Intl` | -| `ES2017.SharedMemory` | -| `ES2017.String` | -| `ES2017.TypedArrays` | -| `ES2018.Intl` | -| `ES2018.Promise` | -| `ES2018.RegExp` | -| `ES2019.Array` | -| `ES2019.Full` | -| `ES2019.Object` | -| `ES2019.String` | -| `ES2019.Symbol` | -| `ES2020.Full` | -| `ES2020.String` | -| `ES2020.Symbol.wellknown` | -| `ESNext.AsyncIterable` | -| `ESNext.Array` | -| `ESNext.Intl` | -| `ESNext.Symbol` | - -此列表有可能会过期,你可以在 [TypeScript 源码中](https://github.com/microsoft/TypeScript/tree/master/lib)查看完整列表。 diff --git a/packages/tsconfig-reference/copy/zh/options/module.md b/packages/tsconfig-reference/copy/zh/options/module.md deleted file mode 100644 index f468b3d53014..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/module.md +++ /dev/null @@ -1,118 +0,0 @@ ---- -display: "模块" -oneline: "模块代码生成。" ---- - -设置程序的模块系统。在 模块 参考页面获取更多信息。你很可能要用 `"CommonJS"`。 - -改变 `module` 可能会影响 [`moduleResolution`](#moduleResolution),它也有 [一个参考页](/docs/handbook/module-resolution.html)。 - -下面是这个文件的一些输出例子: - -```ts twoslash -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `CommonJS` - -```ts twoslash -// @showEmit -// @module: commonjs -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `UMD` - -```ts twoslash -// @showEmit -// @module: umd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `AMD` - -```ts twoslash -// @showEmit -// @module: amd -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `System` - -```ts twoslash -// @showEmit -// @module: system -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `ESNext` - -```ts twoslash -// @showEmit -// @module: esnext -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -#### `ES2020` - -```ts twoslash -// @showEmit -// @module: es2020 -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` - -### `None` - -```ts twoslash -// @showEmit -// @module: none -// @filename: constants.ts -export const valueOfPi = 3.142; -// ---cut--- -// @filename: index.ts -import { valueOfPi } from "./constants"; - -export const twoPi = valueOfPi * 2; -``` diff --git a/packages/tsconfig-reference/copy/zh/options/moduleResolution.md b/packages/tsconfig-reference/copy/zh/options/moduleResolution.md deleted file mode 100644 index b78a9d09ef1a..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/moduleResolution.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -display: "模块解析" -oneline: "允许 TypeScript 1.6 的模块解析策略" ---- - -指定模块解析策略:`'node'` (Node.js) 或 `'classic'` (在 TypeScript 1.6 版本之前使用)。 -你可能不需要在新代码中使用 `classic`。 - -这里有一个关于[模块解析](/docs/handbook/module-resolution.html)的手册参考。 \ No newline at end of file diff --git a/packages/tsconfig-reference/copy/zh/options/noEmit.md b/packages/tsconfig-reference/copy/zh/options/noEmit.md deleted file mode 100644 index 5fda31ea5a84..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/noEmit.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "禁止生成" -oneline: "不在编译中生产文件。" ---- - -禁止编译器生成文件,例如 JavaScript 代码,source-map 或声明。 - -这为另一个工具提供了空间,例如用 [Babel](https://babeljs.io) 或 [swc](https://github.com/swc-project/swc) 来处理将 TypeScript 转换为可以在 JavaScript 环境中运行的文件的过程。 - -然后你可以使用 TypeScript 作为提供编辑器集成的工具,或用来对源码进行类型检查。 diff --git a/packages/tsconfig-reference/copy/zh/options/noImplicitAny.md b/packages/tsconfig-reference/copy/zh/options/noImplicitAny.md deleted file mode 100644 index d15a9920117f..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/noImplicitAny.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -display: "禁止隐式 Any" -oneline: "将具有隐式 ‘Any’ 类型的表达式或声明视为错误。" ---- - -在一些没有类型标记的情况下,当 TypeScript 不能推断出变量的类型时,它将回退为 ‘any’ 类型。 - -这可能会导致一些错误被遗漏,例如: - -```ts twoslash -// @noImplicitAny: false -function fn(s) { - // 不会提示错误? - console.log(s.subtr(3)); -} -fn(42); -``` - -开启 ‘noImplicitAny’ 后,当 TypeScript 推断出 ‘any’ 时就会提示一个错误: - -```ts twoslash -// @errors: 7006 -function fn(s) { - console.log(s.subtr(3)); -} -``` diff --git a/packages/tsconfig-reference/copy/zh/options/noImplicitThis.md b/packages/tsconfig-reference/copy/zh/options/noImplicitThis.md deleted file mode 100644 index 23dfaeb731f0..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/noImplicitThis.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -display: "禁止隐式 This" -oneline: "将具有 ‘any’ 类型的 ‘this’ 视为错误。" ---- - -当 ‘this’ 表达式具有隐式的 ‘any’ 类型时抛出错误。 - -例如,这个类将会返回一个函数,这个函数将会尝试访问 `this.width` 和 `this.height` —— 但在 `getAreaFunction` 函数内返回的函数的上下文中,`this` 并不是 `Rectangle` 的实例。 - - -```ts twoslash -// @errors: 2683 -class Rectangle { - width: number; - height: number; - - constructor(width: number, height: number) { - this.width = width; - this.height = height; - } - - getAreaFunction() { - return function () { - return this.width * this.height; - }; - } -} -``` diff --git a/packages/tsconfig-reference/copy/zh/options/outDir.md b/packages/tsconfig-reference/copy/zh/options/outDir.md deleted file mode 100644 index ddac1c32befb..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/outDir.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "输出目录" -oneline: "为所有生成的文件设置一个输出目录。" ---- - -如果被指定,`.js` (以及 `.d.ts`, `.js.map` 等)将会被生成到这个目录下。 -原始源文件的目录将会被保留,如果计算出的根目录不是你想要的,可以查看 [rootDir](#rootDir)。 - -如果没有指定,`.js` 将被生成至于生成它们的 `.ts` 文件相同的目录中: - -```sh -$ tsc - -example -├── index.js -└── index.ts -``` - -使用类似这样的 `tsconfig.json`: - -```json tsconfig -{ - "compilerOptions": { - "outDir": "dist" - } -} -``` - -使用这些配置运行 `tsc` 时,会将文件移动到指定的 `dist` 文件夹中: - -```sh -$ tsc - -example -├── dist -│ └── index.js -├── index.ts -└── tsconfig.json -``` diff --git a/packages/tsconfig-reference/copy/zh/options/outFile.md b/packages/tsconfig-reference/copy/zh/options/outFile.md deleted file mode 100644 index 4d8f00a8bd9f..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/outFile.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "输出文件" -oneline: "将所有输出打包到一个 .js 文件中。如果 `declaration` 为 true 还可以指定一个 .d.ts 文件。" ---- - -如果被指定,所有 _全局_ (非模块) 文件将被合并到指定的单个输出文件中。 - -如果 `module` 为 `system` 或 `amd`,所有模块文件也将在所有全局内容之后被合并到这个文件中。 - -注:除非 `module` 是 `None`,`System` 或 `AMD`, 否则不能使用 `outFile`。 -这个选项 _不能_ 用来打包 CommonJS 或 ES6 模块。 diff --git a/packages/tsconfig-reference/copy/zh/options/paths.md b/packages/tsconfig-reference/copy/zh/options/paths.md deleted file mode 100644 index b0346ba43cd7..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/paths.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "路径设置" -oneline: "一组用于寻找模块导入的路径" ---- - -一些将模块导入重新映射到相对于 `baseUrl` 路径的配置。[手册](/docs/handbook/module-resolution.html#path-mapping)中有更多关于 `paths` 的内容。 - -`paths` 可以允许你声明 TypeScript 应该如何解析你的 `require`/`import`。 - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": ".", // this must be specified if "paths" is specified. - "paths": { - "jquery": ["node_modules/jquery/dist/jquery"] // this mapping is relative to "baseUrl" - } - } -} -``` - -这将使你可以写 `import "jquery"`,并且在本地获得所有正确的类型。 - -```json tsconfig -{ - "compilerOptions": { - "baseUrl": "src", - "paths": { - "app/*": ["app/*"], - "config/*": ["app/_config/*"], - "environment/*": ["environments/*"], - "shared/*": ["app/_shared/*"], - "helpers/*": ["helpers/*"], - "tests/*": ["tests/*"] - }, -} -``` - -这种情况下,你可以告诉 TypeScript 文件解析器支持一些自定义的前缀来寻找代码。 -这种模式可以避免在你的代码中出现过长的相对路径。 diff --git a/packages/tsconfig-reference/copy/zh/options/plugins.md b/packages/tsconfig-reference/copy/zh/options/plugins.md deleted file mode 100644 index d5f870fd417d..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/plugins.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -display: "插件" -oneline: "要包含的语言服务插件列表" ---- - -可在编辑器内运行的语言服务插件列表。 - -语言服务插件是一种基于现有 TypeScript 文件向用户提供额外信息的方法。它们可以改进 TypeScript 和编辑器之间的现有信息,或提供自己的错误信息。 - -例如: - -- [ts-sql-plugin](https://github.com/xialvjun/ts-sql-plugin#readme) — 增加了用模板字符串做 SQL 构建器时的风格检查。 -- [typescript-styled-plugin](https://github.com/Microsoft/typescript-styled-plugin) — 在目标字符串中提供 CSS 风格检查。 -- [typescript-eslint-language-service](https://github.com/Quramy/typescript-eslint-language-service) — 在编译器的输出中提供 eslint 的错误信息和修复信息。 -- [ts-graphql-plugin](https://github.com/Quramy/ts-graphql-plugin) — -在 GraphQL 查询目标字符串中提供验证和补全。 - -VS Code 可以让一个扩展 [自动包含语言服务插件](https://code.visualstudio.com/api/references/contribution-points#contributes.typescriptServerPlugins),所以你可以在编辑器中运行一些插件,而不需要在 `tsconfig.json` 中指定他们。 diff --git a/packages/tsconfig-reference/copy/zh/options/preserveSymlinks.md b/packages/tsconfig-reference/copy/zh/options/preserveSymlinks.md deleted file mode 100644 index c0c85a2715aa..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/preserveSymlinks.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -display: "保留符号链接" -oneline: "不解析符号链接路径" ---- - -这是为了匹配 Node.js 中相同的选项,它不解析符号链接的真实路径。 - -这个选项也表现出与 Webpack 中 `resolve.symlinks` 选项相反的行为(即设置 TypeScript 的 `preserveSymlinks` 为 true, 与之对应的 Webpack 的 `resolve.symlinks` 为 false。反之亦然) - -启用后,对于模块和包的引用(例如 `import` 和 `/// ` 指令都相对于符号链接所在的位置进行解析,而不是相对于符号链接解析后的路径。 diff --git a/packages/tsconfig-reference/copy/zh/options/removeComments.md b/packages/tsconfig-reference/copy/zh/options/removeComments.md deleted file mode 100644 index 59b565cef7aa..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/removeComments.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -display: "移除注释" -oneline: "不生成注释。" ---- - -当转换为 JavaScript 时,忽略所有 TypeScript 文件中的注释。默认为 `false`。 - -例如,这是一个有 JSDoc 注释的 TypeScript 文件: - -```ts -/** 'Hello world' 的葡萄牙语翻译 */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -当然 `removeComments` 被设置为 `true`: - -```ts twoslash -// @showEmit -// @removeComments: true -/** 'Hello world' 的葡萄牙语翻译 */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -未设置 `removeComments` 或被设置为 `false`: - -```ts twoslash -// @showEmit -// @removeComments: false -/** 'Hello world' 的葡萄牙语翻译 */ -export const helloWorldPTBR = "Olá Mundo"; -``` - -这意味着你的注释将呈现在 JavaScript 中。 diff --git a/packages/tsconfig-reference/copy/zh/options/rootDir.md b/packages/tsconfig-reference/copy/zh/options/rootDir.md deleted file mode 100644 index 3d2c441d4ede..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/rootDir.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -display: "根目录" -oneline: "设置你源码的根目录。" ---- - -**默认**: 所有输入的非声明文件中的最长公共路径。若 `composite` 被指定,则是包含 `tsconfig.json` 文件的目录。 - -当 TypeScript 编译文件时,它在输出目录中保持与输入目录中相同的目录结构。 - -例如,假设你有一些输入文件: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -├── types.d.ts -``` - -`rootDir` 推断的结构是所有非声明输入文件的最长公共路径,在例子中为 `core/`。 - -如果你的 `outDir` 是 `dist`,TypeScript 将会生成这样的文件树: - -``` -MyProj -├── dist -│ ├── a.ts -│ ├── b.ts -│ ├── sub -│ │ ├── c.ts -``` - -但你可能希望让 `core` 成为输出目录结构的一部分。 -通过在 `tsconfig.json` 中指定 `rootDir: "."`,TypeScript 将会生成这样的文件树: - -``` -MyProj -├── dist -│ ├── core -│ │ ├── a.js -│ │ ├── b.js -│ │ ├── sub -│ │ │ ├── c.js -``` - -重要的是,`rootDir` **不会影响哪些文件被包含在编译中**。 -它与 `tsconfig.json` 中 `include`,`exclude`,or `files` 的选项没有关系。 - -请注意,TypeScript 永远不会将输出文件写入 `outDir` 之外的目录,也不会忽略生成某些文件。 -处于这个原因,`rootDir` 页强制要求所有需要被生成的文件都在 `rootDir` 路径下。 - -例如,假设你有这样的文件树: - -``` -MyProj -├── tsconfig.json -├── core -│ ├── a.ts -│ ├── b.ts -├── helpers.ts -``` - -将 `rootDir` 指定为 `core`,_并且_ 将 `include` 指定为 `*` 是错误的,因为它会创建一个文件(`helpers.ts`),这个文件会被生成在 `outDir` _之外_ (即 `../helpers.js`)。 diff --git a/packages/tsconfig-reference/copy/zh/options/rootDirs.md b/packages/tsconfig-reference/copy/zh/options/rootDirs.md deleted file mode 100644 index 44d782feb715..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/rootDirs.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -display: "根目录" -oneline: "设置多个根目录" ---- - -通过 `rootDirs`,你可以告诉编译器有许多“虚拟”的目录作为一个根目录。这将会允许编译器在这些“虚拟”目录中解析相对应的模块导入,就像它们被合并到同一目录中一样。 - -例如: - -``` - src - └── views - └── view1.ts (can import "./template1", "./view2`) - └── view2.ts (can import "./template1", "./view1`) - - generated - └── templates - └── views - └── template1.ts (can import "./view1", "./view2") -``` - -```json tsconfig -{ - "compilerOptions": { - "rootDirs": ["src/views", "generated/templates/views"] - } -} -``` - -这不会影响到 TypeScript 如何生成 JavaScript,而仅是模拟了假设它们在运行时能通过这些相对路径工作。 diff --git a/packages/tsconfig-reference/copy/zh/options/sourceMap.md b/packages/tsconfig-reference/copy/zh/options/sourceMap.md deleted file mode 100644 index eae2bdfc1cd2..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/sourceMap.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "Source Map" -oneline: "为生成的 JavaScript 文件生成 source map 文件。" ---- - -启用生成 [sourcemap files](https://developer.mozilla.org/docs/Tools/Debugger/How_to/Use_a_source_map)。 -这些文件允许调试器和其他工具在使用实际生成的 JavaScript 文件时,显示原始的 TypeScript 代码。 -Source map 文件以 `.js.map` (或 `.jsx.map`)文件的形式被生成到相应的 `.js` 文件输出旁。 - -`.js` 文件将会包含一个 sourcemap 注释,以向外部工具表明文件在哪里。例如: - -```ts -// helloWorld.ts -export declare const helloWorld = "hi"; -``` - -在将 `sourceMap` 设置为 `true` 的情况下编译,会生成如下 JavaScript 文件: - -```js -// helloWorld.js -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.helloWorld = "hi"; -//# sourceMappingURL=// helloWorld.js.map -``` - -并且会生成这个 json 格式的 sourcemap - -```json -// helloWorld.js.map -{ - "version": 3, - "file": "ex.js", - "sourceRoot": "", - "sources": ["../ex.ts"], - "names": [], - "mappings": ";;AAAa,QAAA,UAAU,GAAG,IAAI,CAAA" -} -``` diff --git a/packages/tsconfig-reference/copy/zh/options/strict.md b/packages/tsconfig-reference/copy/zh/options/strict.md deleted file mode 100644 index 8c264c7f70ca..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/strict.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -display: "严格模式" -oneline: "启用所有的严格类型检查选项。" ---- - -`strict` 选项可以启用很多的类型检查行为,从而更好的保证程序的正确性。 -启用这个选项相当于启用了所有的 _严格模式系列_ 选项,这些选项在下面有概述。 -之后你也可以根据自己的需要关闭任意严格模式系列检查。 - -TypeScript 的未来版本可能会在这个标志下加入额外的更严格的检查,所以 TypeScript 升级时可能会导致你的程序出现新的类型错误。 -在适当和可能的情况下,TypeScript 将会添加一个相应的标志,以允许禁用这些更严格的检查行为。 diff --git a/packages/tsconfig-reference/copy/zh/options/strictBindCallApply.md b/packages/tsconfig-reference/copy/zh/options/strictBindCallApply.md deleted file mode 100644 index 8480629e7125..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/strictBindCallApply.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -display: "严格的 Bind Call Apply" -oneline: "检查 `bind`,`call` 和 `apply` 的参数是否与原函数匹配。" ---- - -当开启后,TypeScript 将检查内置函数 `bind`,`call` 和 `apply` 是否接受了被调用函数的正确参数: - - -```ts twoslash -// @strictBindCallApply: true -// @errors: 2345 - -// 启用 strictBindCallApply 选项 -function fn(x: string) { - return parseInt(x); -} - -const n1 = fn.call(undefined, "10"); - -const n2 = fn.call(undefined, false); -``` - -否则,这些函数将接受任意参数,并且返回 `any`: - -```ts twoslash -// @strictBindCallApply: false - -// With strictBindCallApply off -function fn(x: string) { - return parseInt(x); -} - -// Note: No error; return type is 'any' -const n = fn.call(undefined, false); -``` diff --git a/packages/tsconfig-reference/copy/zh/options/strictFunctionTypes.md b/packages/tsconfig-reference/copy/zh/options/strictFunctionTypes.md deleted file mode 100644 index 6b49174249f4..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/strictFunctionTypes.md +++ /dev/null @@ -1,55 +0,0 @@ ---- -display: "严格函数类型" -oneline: "在赋值函数时,进行用于确保参数和返回值是子类型兼容的检查。" ---- - -启用后,该选项将会使函数参数更正确的被检查。 - -这里有一个当 `strictFunctionTypes` 关闭时的简单例子: - -```ts twoslash -// @strictFunctionTypes: false -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -type StringOrNumberFunc = (ns: string | number) => void; - -// 不安全的赋值 -let func: StringOrNumberFunc = fn; -// 不安全的调用 —— 将会异常 -func(10); -``` - -当 `strictFunctionTypes` 选项 _开启_,这个错误将被正确的检测到: - -```ts twoslash -// @errors: 2322 -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -type StringOrNumberFunc = (ns: string | number) => void; - -// 防止不安全的赋值 -let func: StringOrNumberFunc = fn; -``` - -在开发此功能期间,我们发现了大量不安全的类继承结构,包括 DOM 中的一些类。 -因此,这个选项仅适用于 _function_ 语法编写的函数,而不适用于 _method_ 语法的函数: - -```ts twoslash -type Methodish = { - func(x: string | number): void; -}; - -function fn(x: string) { - console.log("Hello, " + x.toLowerCase()); -} - -// 这终究是一个不安全的赋值,但是没有检测到 -const m: Methodish = { - func: fn, -}; -m.func(10); -``` diff --git a/packages/tsconfig-reference/copy/zh/options/strictNullChecks.md b/packages/tsconfig-reference/copy/zh/options/strictNullChecks.md deleted file mode 100644 index 45793672d9ca..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/strictNullChecks.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -display: "严格空检查" -oneline: "在类型检查时考虑 `null` 和 `undefined`。" ---- - -当 `strictNullChecks` 为 `false`,`null` 和 `undefined` 实际上被语言忽略。 -这可能导致运行时出现意外的错误。 - -当 `strictNullChecks` 为 `true`, `null` 和 `undefined` 将有自己的不同的类型。如果你试图在预期的具体值中使用它们,你将会得到一个类型错误。 - -例如,在这段 TypeScript 代码中,不能确保 `users.find` 真的可以找到一个 `user`。 -但是你可以把代码写得好像它一定可以找到一样: - -```ts twoslash -// @strictNullChecks: false -// @target: ES2015 -declare const loggedInUsername: string; - -const users = [ - { name: "Oby", age: 12 }, - { name: "Heera", age: 32 }, -]; - -const loggedInUser = users.find((u) => u.name === loggedInUsername); -console.log(loggedInUser.age); -``` - -将 `strictNullChecks` 设置为 `true` 将会抛出一个错误,即你在尝试使用 `loggedInUser` 之前没有确保它存在。 - -```ts twoslash -// @errors: 2339 2532 -// @target: ES2020 -// @strictNullChecks -declare const loggedInUsername: string; - -const users = [ - { name: "Oby", age: 12 }, - { name: "Heera", age: 32 }, -]; - -const loggedInUser = users.find((u) => u.name === loggedInUsername); -console.log(loggedInUser.age); -``` - -第二个例子失败了,因为 `array` 的 `find` 可以被看作类似如下简化形式: - -```ts -// 当 strictNullChecks: true -type Array = { - find(predicate: (value: any, index: number) => boolean): S | undefined; -}; - -// 当 strictNullChecks: false undefined 被从类型系统中删除, -// 这将会允许你写出假设总是可以找到结果的代码。 -type Array = { - find(predicate: (value: any, index: number) => boolean): S; -}; -``` diff --git a/packages/tsconfig-reference/copy/zh/options/strictPropertyInitialization.md b/packages/tsconfig-reference/copy/zh/options/strictPropertyInitialization.md deleted file mode 100644 index 9bc4dce9de55..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/strictPropertyInitialization.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -display: "严格属性初始化" -oneline: "检查被声明但是没有被在构造函数中指定初始值的类成员。" ---- - -当设置为 true 时,TypeScript 会将被声明但是没有在构造函数中指定初始值的类属性视为错误。 - -```ts twoslash -// @errors: 2564 -class UserAccount { - name: string; - accountType = "user"; - - email: string; - address: string | undefined; - - constructor(name: string) { - this.name = name; - // 注意,this.email 没有被赋值 - } -} -``` - -在上述情况下: - -- `this.name` 被指定初始值。 -- `this.accountType` 被指定默认值。 -- `this.email` 没有被指定,并且抛出一个错误。 -- `this.address` 被声明为具有 `undefined` 类型,这意味着它不必被指定。 diff --git a/packages/tsconfig-reference/copy/zh/options/target.md b/packages/tsconfig-reference/copy/zh/options/target.md deleted file mode 100644 index c4751c385360..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/target.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -display: "编译目标" -oneline: "设置生成的 JavaScript 语言的版本,并且会包含兼容的库(环境)的定义。" ---- - -现代浏览器支持全部 ES6 的功能,所以 `ES6` 是一个不错的选择。 -如果你的代码部署在旧的环境中,你可以选择设置一个更低的目标;如果你的代码保证会运行在新的环境中,你可以选择一个更高的目标。 - -`target` 的配置将会改变哪些 JS 特性会被降级,而哪些会被完整保留 -例如,如果 `target` 是 ES5 或更低版本,箭头函数 `() => this` 会被转换为等价的 `函数` 表达式。 - -改变 `target` 也会改变 [`lib`](#lib) 选项的默认值。 -你可以根据需要混搭 `target` 和 `lib` 的配置,你也可以为了方便只设置 `target`。 - -如果你只使用 Node.js,这里推荐基于 Node 版本的 `target`: - -| 名称 | 支持的编译目标 | -| ------- | ---------------- | -| Node 8 | `ES2017` | -| Node 10 | `ES2018` | -| Node 12 | `ES2019` | - -这些基于 [node.green](https://node.green) 的支持数据库。 - -特殊的 `ESNext` 值代表你的 TypeScript 所支持的最高版本。这个配置应当被谨慎使用,因为它在不同的 TypeScript 版本之间的含义不同,并且会导致升级更难预测。 diff --git a/packages/tsconfig-reference/copy/zh/options/tsBuildInfoFile.md b/packages/tsconfig-reference/copy/zh/options/tsBuildInfoFile.md deleted file mode 100644 index 6e09cce48a9d..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/tsBuildInfoFile.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -display: "TS 构建信息文件" -oneline: "为 .tsbuildinfo 增量编译信息指定目录。" ---- - -这个选项可以让您指定一个文件来存储增量编译信息,以作为复合工程的一部分,从而可以更快的构建更大的 TypeScript 代码库。你可以 [在手册](/docs/handbook/project-references.html) 阅读更多关于复合工程的内容。 - -这个选项提供了一种方法,可以配置 TypeScript 追踪它存储在磁盘上的文件的位置,用来指示项目的构建状态。—— 默认情况下,它们与你生成的 JavaScript 在同一个文件夹中。 diff --git a/packages/tsconfig-reference/copy/zh/options/typeRoots.md b/packages/tsconfig-reference/copy/zh/options/typeRoots.md deleted file mode 100644 index b52bd465e6a5..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/typeRoots.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -display: "类型根路径" -oneline: "TypeScript 应该去哪些路径寻找类型定义" ---- - -默认情况下,所有 _可见_ 的 "`@types`" 包都将包含在你的编译过程中。 -在 `node_modules/@types` 中的任何包都被认为是 _可见_ 的。 -例如,这意味着包含 `./node_modules/@types/`,`../node_modules/@types/`,`../../node_modules/@types/` 中所有的包。 - -当 `typeRoots` 被指定,_仅有_ 在 `typeRoots` 下的包会被包含。例如: - -```json tsconfig -{ - "compilerOptions": { - "typeRoots": ["./typings", "./vendor/types"] - } -} -``` - -这个配置文件将包含 `./typings` 和 `./vendor/types` 下的所有包,而不包括 `./node_modules/@types` 下的。其中所有的路径都是相对于 `tsconfig.json`。 diff --git a/packages/tsconfig-reference/copy/zh/options/types.md b/packages/tsconfig-reference/copy/zh/options/types.md deleted file mode 100644 index 172ad0bb1e22..000000000000 --- a/packages/tsconfig-reference/copy/zh/options/types.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -display: "类型" -oneline: "用于创建一个允许包含在编译过程中的类型列表" ---- - -默认情况下,所有 _可见_ 的 "`@types`" 包都将包含在你的编译过程中。 -在 `node_modules/@types` 中的任何包都被认为是 _可见_ 的。 -例如,这意味着包含 `./node_modules/@types/`,`../node_modules/@types/`,`../../node_modules/@types/` 中所有的包。。 - -当 `types` 被指定,则只有列出的包才会被包含在全局范围内。例如: - -```json tsconfig -{ - "compilerOptions": { - "types": ["node", "jest", "express"] - } -} -``` - -这个 `tsconfig.json` 文件将 _只会_ 包含 `./node_modules/@types/node`,`./node_modules/@types/jest` 和 `./node_modules/@types/express`。 -其他在 `node_modules/@types/*` 下的包将不会被包含。 - -### 这会影响什么? - -此选项不会影响 `@types/*` 如何被包含在你的代码中,例如你在有上面例子里 `compilerOptions` 的环境中写了这样的代码: - -```ts -import * as moment from "moment"; - -moment().format("MMMM Do YYYY, h:mm:ss a"); -``` - -`moment` 导入会有完整的类型。 - -当你设置了这个选项,通过不在 `types` 数组中包含,它将: -- 不会再你的项目中添加全局声明(例如 node 中的 `process` 或 Jest 中的 `expect`) -- 导出不会出现再自动导入的建议中 - -此功能与 [`类型根路径`](#typeRoots) 不同的是,它只指定你想要包含的具体类型,而 [`类型根路径`](#typeRoots) 支持你想要特定的文件夹。 diff --git a/packages/tsconfig-reference/copy/zh/sections/compilerOptions.md b/packages/tsconfig-reference/copy/zh/sections/compilerOptions.md deleted file mode 100644 index b473c5d339fa..000000000000 --- a/packages/tsconfig-reference/copy/zh/sections/compilerOptions.md +++ /dev/null @@ -1,3 +0,0 @@ -### 编译选项 - -这些选项是 TypeScript 配置的主要部分,它涵盖了语言应该如何工作。 diff --git a/packages/tsconfig-reference/copy/zh/sections/top_level.md b/packages/tsconfig-reference/copy/zh/sections/top_level.md deleted file mode 100644 index eb649831b38a..000000000000 --- a/packages/tsconfig-reference/copy/zh/sections/top_level.md +++ /dev/null @@ -1,3 +0,0 @@ -### 上层选项 - -首先是 TSConfig 中的顶层选项——这些选项与 TypeScript 或 JavaScript 项目的设置方式有关。 diff --git a/packages/typescriptlang-org/lib/bootup/ingestion/createTSConfigReference.ts b/packages/typescriptlang-org/lib/bootup/ingestion/createTSConfigReference.ts index 2731c37ceb32..d19ca40fb9ab 100644 --- a/packages/typescriptlang-org/lib/bootup/ingestion/createTSConfigReference.ts +++ b/packages/typescriptlang-org/lib/bootup/ingestion/createTSConfigReference.ts @@ -40,6 +40,8 @@ export const createTSConfigReference = async ( const categoriesForLang = path.join( __dirname, "..", "..", "..", "..", "tsconfig-reference", "output", element.name + ".json") const lang = element.name + + if (lang.length !== 2) return if (!isMultiLingual && lang !== "en") return // Support urls being consistent with the current infra, e.g. en with no prefix diff --git a/yarn.lock b/yarn.lock index fc8c0a25967f..8101d640cfe5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3974,6 +3974,23 @@ __metadata: languageName: node linkType: hard +"@oss-docs/sync@npm:^1.0.0": + version: 1.0.0 + resolution: "@oss-docs/sync@npm:1.0.0" + dependencies: + cachedir: ^2.3.0 + chalk: ^4.1.0 + cross-spawn: ^7.0.1 + gunzip-maybe: ^1.4.1 + mvdir: ^1.0.21 + tar-fs: ^2.1.0 + yargs: ^16.2.0 + bin: + docs-sync: bin/docs-sync + checksum: 22e3c9e7bb3015400023f46cb6adae0e7a5106dfc10d30b751d6eab0741ac3df69f810471ff8bdf9614f81c05ebf36d790817549f772a82eb9c2e832b18e8191 + languageName: node + linkType: hard + "@pieh/friendly-errors-webpack-plugin@npm:1.7.0-chalk-2": version: 1.7.0-chalk-2 resolution: "@pieh/friendly-errors-webpack-plugin@npm:1.7.0-chalk-2" @@ -5232,7 +5249,7 @@ __metadata: languageName: node linkType: hard -"@typescript/twoslash@1.1.3, @typescript/twoslash@workspace:packages/ts-twoslasher": +"@typescript/twoslash@1.1.4, @typescript/twoslash@workspace:packages/ts-twoslasher": version: 0.0.0-use.local resolution: "@typescript/twoslash@workspace:packages/ts-twoslasher" dependencies: @@ -7861,6 +7878,13 @@ __metadata: languageName: node linkType: hard +"cachedir@npm:^2.3.0": + version: 2.3.0 + resolution: "cachedir@npm:2.3.0" + checksum: 17153ca421c3ba004ab74dda259898ee06b7a8067383f6132350cd42beddae70a2420a9f0a235ec2a6f91f925fe3e52ba9e2bd92adfbf556af7c2e35f88cb786 + languageName: node + linkType: hard + "call-me-maybe@npm:^1.0.1": version: 1.0.1 resolution: "call-me-maybe@npm:1.0.1" @@ -8114,6 +8138,16 @@ __metadata: languageName: node linkType: hard +"chalk@npm:^4.1.0": + version: 4.1.0 + resolution: "chalk@npm:4.1.0" + dependencies: + ansi-styles: ^4.1.0 + supports-color: ^7.1.0 + checksum: f860285b419f9e925c2db0f45ffa88aa8794c14b80cc5d01ff30930bcfc384996606362706f0829cf557f6d36152a5fb2d227ad63c4bc90e2ec9e9dbed4a3c07 + languageName: node + linkType: hard + "change-case@npm:^3.1.0": version: 3.1.0 resolution: "change-case@npm:3.1.0" @@ -8490,6 +8524,17 @@ __metadata: languageName: node linkType: hard +"cliui@npm:^7.0.2": + version: 7.0.4 + resolution: "cliui@npm:7.0.4" + dependencies: + string-width: ^4.2.0 + strip-ansi: ^6.0.0 + wrap-ansi: ^7.0.0 + checksum: c49ac1d13f6dda4beaa11b26f62867e0e9892eb985951187d7c691793e0fe08b9bc15cedfaf4dc6d2e9a4d1516704c0c9dcb671ebcd758dbabb18b5d757fbdb5 + languageName: node + linkType: hard + "clone-deep@npm:^4.0.1": version: 4.0.1 resolution: "clone-deep@npm:4.0.1" @@ -13986,17 +14031,17 @@ fsevents@~2.1.2: languageName: node linkType: hard -"gatsby-remark-shiki-twoslash@0.7.0, gatsby-remark-shiki-twoslash@workspace:packages/gatsby-remark-shiki-twoslash": +"gatsby-remark-shiki-twoslash@0.7.1, gatsby-remark-shiki-twoslash@workspace:packages/gatsby-remark-shiki-twoslash": version: 0.0.0-use.local resolution: "gatsby-remark-shiki-twoslash@workspace:packages/gatsby-remark-shiki-twoslash" dependencies: "@types/jest": ^25.1.3 - "@typescript/twoslash": 1.1.3 + "@typescript/twoslash": 1.1.4 "@typescript/vfs": 1.3.2 rehype-stringify: ^6.0.1 shiki: ^0.1.6 shiki-languages: ^0.1.6 - shiki-twoslash: 0.8.1 + shiki-twoslash: 0.8.2 tsdx: ^0.14.1 tslib: ^1.10.0 typescript: "*" @@ -14288,7 +14333,7 @@ fsevents@~2.1.2: languageName: node linkType: hard -"get-caller-file@npm:^2.0.1": +"get-caller-file@npm:^2.0.1, get-caller-file@npm:^2.0.5": version: 2.0.5 resolution: "get-caller-file@npm:2.0.5" checksum: 9dd9e1e2591039ee4c38c897365b904f66f1e650a8c1cb7b7db8ce667fa63e88cc8b13282b74df9d93de481114b3304a0487880d31cd926dfda6efe71455855d @@ -20883,6 +20928,13 @@ fsevents@~2.1.2: languageName: node linkType: hard +"mvdir@npm:^1.0.21": + version: 1.0.21 + resolution: "mvdir@npm:1.0.21" + checksum: 09090045a70bd7da33702d29bd37f66da4e749dc9e2bae097a87b11e6269ef78dff63ec8bb98f3805d762c2e4b857a636bd5c2a21bf766b70350eb6a7e2435af + languageName: node + linkType: hard + "name-all-modules-plugin@npm:^1.0.1": version: 1.0.1 resolution: "name-all-modules-plugin@npm:1.0.1" @@ -25011,14 +25063,14 @@ fsevents@~2.1.2: resolution: "remark-shiki-twoslash@workspace:packages/remark-shiki-twoslash" dependencies: "@types/jest": ^25.1.3 - "@typescript/twoslash": 1.1.3 + "@typescript/twoslash": 1.1.4 "@typescript/vfs": 1.3.2 babel-jest: ^26.6.3 mdx: "*" rehype-stringify: ^6.0.1 shiki: ^0.1.6 shiki-languages: ^0.1.6 - shiki-twoslash: 0.8.1 + shiki-twoslash: 0.8.2 tsdx: ^0.14.1 tslib: ^1.10.0 typescript: "*" @@ -25706,6 +25758,7 @@ resolve@1.1.7: version: 0.0.0-use.local resolution: "root@workspace:." dependencies: + "@oss-docs/sync": ^1.0.0 "@types/express": ^4.17.6 concurrently: ^5.1.0 cross-env: ^7.0.2 @@ -26375,14 +26428,14 @@ resolve@1.1.7: languageName: node linkType: hard -"shiki-twoslash@0.8.1, shiki-twoslash@workspace:packages/shiki-twoslash": +"shiki-twoslash@0.8.2, shiki-twoslash@workspace:packages/shiki-twoslash": version: 0.0.0-use.local resolution: "shiki-twoslash@workspace:packages/shiki-twoslash" dependencies: "@types/jest": ^25.1.3 - "@typescript/twoslash": 1.1.3 + "@typescript/twoslash": 1.1.4 "@typescript/vfs": 1.3.2 - gatsby-remark-shiki-twoslash: 0.7.0 + gatsby-remark-shiki-twoslash: 0.7.1 rehype-stringify: ^6.0.1 shiki: ^0.1.6 shiki-languages: ^0.1.6 @@ -28806,7 +28859,7 @@ resolve@1.1.7: "@types/react": ^16.9.20 "@types/react-dom": ^16.9.5 "@types/react-helmet": ^5.0.15 - "@typescript/twoslash": 1.1.3 + "@typescript/twoslash": 1.1.4 canvas: ^2.6.1 concurrently: ^5.1.0 gatsby: ^2.24.85 @@ -30497,6 +30550,17 @@ resolve@1.1.7: languageName: node linkType: hard +"wrap-ansi@npm:^7.0.0": + version: 7.0.0 + resolution: "wrap-ansi@npm:7.0.0" + dependencies: + ansi-styles: ^4.0.0 + string-width: ^4.1.0 + strip-ansi: ^6.0.0 + checksum: 09939dd775ae565bb99a25a6c072fe3775a95fa71751b5533c94265fe986ba3e3ab071a027ab76cf26876bd9afd10ac3c2d06d7c4bcce148bf7d2d9514e3a0df + languageName: node + linkType: hard + "wrappy@npm:1": version: 1.0.2 resolution: "wrappy@npm:1.0.2" @@ -30728,6 +30792,13 @@ resolve@1.1.7: languageName: node linkType: hard +"y18n@npm:^5.0.5": + version: 5.0.5 + resolution: "y18n@npm:5.0.5" + checksum: a7d41b0cccca1c98ebab270a944df48eb3b5352d3be0affb8afc8369823f6aa97a5fbead2c5b35e59a5650cb786b2b37627b45be5ff31f02a80dd3b881aceb17 + languageName: node + linkType: hard + "yaeti@npm:^0.0.6": version: 0.0.6 resolution: "yaeti@npm:0.0.6" @@ -30792,7 +30863,7 @@ resolve@1.1.7: languageName: node linkType: hard -"yargs-parser@npm:20.x": +"yargs-parser@npm:20.x, yargs-parser@npm:^20.2.2": version: 20.2.4 resolution: "yargs-parser@npm:20.2.4" checksum: 00dd0f23b608aa16962f1b73ac6c461ae6c97e8e85ad24b0c9adfeb5ef20a93a484ba858a6a3200f487478427db27d555d7772463d793d6c27b1b8b614cf3d7e @@ -30893,6 +30964,21 @@ resolve@1.1.7: languageName: node linkType: hard +"yargs@npm:^16.2.0": + version: 16.2.0 + resolution: "yargs@npm:16.2.0" + dependencies: + cliui: ^7.0.2 + escalade: ^3.1.1 + get-caller-file: ^2.0.5 + require-directory: ^2.1.1 + string-width: ^4.2.0 + y18n: ^5.0.5 + yargs-parser: ^20.2.2 + checksum: a79ce1f043021cd645de1ffebb6149541d382ba68f4a6b5eca5d2ad65af51893371bbd78e240dc3b6cf0cbb419511ba5bda715dec992e4266e6863ea49f14feb + languageName: node + linkType: hard + "yauzl@npm:^2.4.2": version: 2.10.0 resolution: "yauzl@npm:2.10.0" From fa0c50eb079790b3ebb8af3a54d8f231a37bc871 Mon Sep 17 00:00:00 2001 From: Orta Date: Sun, 31 Jan 2021 17:48:47 +0000 Subject: [PATCH 2/6] More work on moving translations out --- packages/documentation/.gitignore | 3 +++ packages/glossary/.gitignore | 4 ++++ packages/playground-examples/.gitignore | 3 +++ .../src/components/Intl.tsx | 4 ++-- .../src/components/layout/CookieBanner.tsx | 2 +- packages/typescriptlang-org/src/copy/en.ts | 24 ------------------- packages/typescriptlang-org/src/copy/en/en.ts | 24 +++++++++++++++++++ packages/typescriptlang-org/src/copy/es.ts | 22 ----------------- packages/typescriptlang-org/src/copy/es/es.ts | 22 +++++++++++++++++ packages/typescriptlang-org/src/copy/id.ts | 20 ---------------- packages/typescriptlang-org/src/copy/id/id.ts | 20 ++++++++++++++++ packages/typescriptlang-org/src/copy/ja.ts | 16 ------------- packages/typescriptlang-org/src/copy/ja/ja.ts | 16 +++++++++++++ packages/typescriptlang-org/src/copy/pl.ts | 18 -------------- packages/typescriptlang-org/src/copy/pl/pl.ts | 18 ++++++++++++++ packages/typescriptlang-org/src/copy/pt.ts | 16 ------------- packages/typescriptlang-org/src/copy/pt/pt.ts | 16 +++++++++++++ .../src/copy/{ => vo}/vo.ts | 6 ++--- packages/typescriptlang-org/src/copy/zh.ts | 22 ----------------- packages/typescriptlang-org/src/copy/zh/zh.ts | 22 +++++++++++++++++ 20 files changed, 154 insertions(+), 144 deletions(-) create mode 100644 packages/documentation/.gitignore create mode 100644 packages/playground-examples/.gitignore delete mode 100644 packages/typescriptlang-org/src/copy/en.ts create mode 100644 packages/typescriptlang-org/src/copy/en/en.ts delete mode 100644 packages/typescriptlang-org/src/copy/es.ts create mode 100644 packages/typescriptlang-org/src/copy/es/es.ts delete mode 100644 packages/typescriptlang-org/src/copy/id.ts create mode 100644 packages/typescriptlang-org/src/copy/id/id.ts delete mode 100644 packages/typescriptlang-org/src/copy/ja.ts create mode 100644 packages/typescriptlang-org/src/copy/ja/ja.ts delete mode 100644 packages/typescriptlang-org/src/copy/pl.ts create mode 100644 packages/typescriptlang-org/src/copy/pl/pl.ts delete mode 100644 packages/typescriptlang-org/src/copy/pt.ts create mode 100644 packages/typescriptlang-org/src/copy/pt/pt.ts rename packages/typescriptlang-org/src/copy/{ => vo}/vo.ts (51%) delete mode 100644 packages/typescriptlang-org/src/copy/zh.ts create mode 100644 packages/typescriptlang-org/src/copy/zh/zh.ts diff --git a/packages/documentation/.gitignore b/packages/documentation/.gitignore new file mode 100644 index 000000000000..f2a5f1d99672 --- /dev/null +++ b/packages/documentation/.gitignore @@ -0,0 +1,3 @@ +# Handled by @oss-docs/sync +copy/** +!copy/**/en diff --git a/packages/glossary/.gitignore b/packages/glossary/.gitignore index 53752db253e3..2335a40bb2d4 100644 --- a/packages/glossary/.gitignore +++ b/packages/glossary/.gitignore @@ -1 +1,5 @@ output + +# Handled by @oss-docs/sync +copy/** +!copy/**/en diff --git a/packages/playground-examples/.gitignore b/packages/playground-examples/.gitignore new file mode 100644 index 000000000000..f2a5f1d99672 --- /dev/null +++ b/packages/playground-examples/.gitignore @@ -0,0 +1,3 @@ +# Handled by @oss-docs/sync +copy/** +!copy/**/en diff --git a/packages/typescriptlang-org/src/components/Intl.tsx b/packages/typescriptlang-org/src/components/Intl.tsx index 2748a6d1b11f..22d976deeb77 100644 --- a/packages/typescriptlang-org/src/components/Intl.tsx +++ b/packages/typescriptlang-org/src/components/Intl.tsx @@ -8,9 +8,9 @@ type IntlProps = { export const Intl = (props: IntlProps) => { const { children, locale } = props - let messages = require("../copy/en").lang + let messages = require("../copy/en/en").lang try { - messages = require("../copy/" + locale).lang + messages = require("../copy/" + locale + "/" + locale).lang } catch (error) { // NOOP } diff --git a/packages/typescriptlang-org/src/components/layout/CookieBanner.tsx b/packages/typescriptlang-org/src/components/layout/CookieBanner.tsx index fbc169ff6fc5..288c3724eb3d 100644 --- a/packages/typescriptlang-org/src/components/layout/CookieBanner.tsx +++ b/packages/typescriptlang-org/src/components/layout/CookieBanner.tsx @@ -22,7 +22,7 @@ export const CookieBanner = (props: { lang: string }) => { let siteConsent // If they ship a bad build of the cookie banner, then even though the script is fully there // the global symbols won't be - if (!WcpConsent) return + if (typeof WcpConsent === 'undefined' || WcpConsent) return WcpConsent.init("en-US", "cookie-banner", (err, _siteConsent) => { if (err) { diff --git a/packages/typescriptlang-org/src/copy/en.ts b/packages/typescriptlang-org/src/copy/en.ts deleted file mode 100644 index ed2c06fe3c2b..000000000000 --- a/packages/typescriptlang-org/src/copy/en.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { defineMessages } from "react-intl" -import { navCopy } from "./en/nav" -import { headCopy } from "./en/head-seo" -import { docCopy } from "./en/documentation" -import { indexCopy } from "./en/index" -import { playCopy } from "./en/playground" -import { comCopy } from "./en/community" -import { handbookCopy } from "./en/handbook" -import { dtCopy } from "./en/dt" - -export const messages = { - ...navCopy, - ...docCopy, - ...headCopy, - ...indexCopy, - ...playCopy, - ...comCopy, - ...handbookCopy, - ...dtCopy, -} - -export const lang = defineMessages(messages) - -export type Copy = typeof lang diff --git a/packages/typescriptlang-org/src/copy/en/en.ts b/packages/typescriptlang-org/src/copy/en/en.ts new file mode 100644 index 000000000000..a517d1886bd6 --- /dev/null +++ b/packages/typescriptlang-org/src/copy/en/en.ts @@ -0,0 +1,24 @@ +import { defineMessages } from "react-intl" +import { navCopy } from "./nav" +import { headCopy } from "./head-seo" +import { docCopy } from "./documentation" +import { indexCopy } from "./index" +import { playCopy } from "./playground" +import { comCopy } from "./community" +import { handbookCopy } from "./handbook" +import { dtCopy } from "./dt" + +export const messages = { + ...navCopy, + ...docCopy, + ...headCopy, + ...indexCopy, + ...playCopy, + ...comCopy, + ...handbookCopy, + ...dtCopy, +} + +export const lang = defineMessages(messages) + +export type Copy = typeof lang diff --git a/packages/typescriptlang-org/src/copy/es.ts b/packages/typescriptlang-org/src/copy/es.ts deleted file mode 100644 index 85b76f487928..000000000000 --- a/packages/typescriptlang-org/src/copy/es.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { defineMessages } from "react-intl" -import { Copy, messages as englishMessages } from "./en" -import { navCopy } from "./es/nav" -import { headCopy } from "./es/head-seo" - -import { docCopy } from "./es/documentation" -import { indexCopy } from "./es/index" - -import { playCopy } from "./es/playground" -import { comCopy } from "./es/community" -import { handbookCopy } from "./en/handbook" - -export const lang: Copy = defineMessages({ - ...englishMessages, - ...navCopy, - ...docCopy, - ...headCopy, - ...indexCopy, - ...playCopy, - ...comCopy, - ...handbookCopy, -}) diff --git a/packages/typescriptlang-org/src/copy/es/es.ts b/packages/typescriptlang-org/src/copy/es/es.ts new file mode 100644 index 000000000000..f6dd4f4cd17f --- /dev/null +++ b/packages/typescriptlang-org/src/copy/es/es.ts @@ -0,0 +1,22 @@ +import { defineMessages } from "react-intl" +import { Copy, messages as englishMessages } from "../en/en" +import { navCopy } from "./nav" +import { headCopy } from "./head-seo" + +import { docCopy } from "./documentation" +import { indexCopy } from "./index" + +import { playCopy } from "./playground" +import { comCopy } from "./community" +import { handbookCopy } from "../en/handbook" + +export const lang: Copy = defineMessages({ + ...englishMessages, + ...navCopy, + ...docCopy, + ...headCopy, + ...indexCopy, + ...playCopy, + ...comCopy, + ...handbookCopy, +}) diff --git a/packages/typescriptlang-org/src/copy/id.ts b/packages/typescriptlang-org/src/copy/id.ts deleted file mode 100644 index d6871ca7f67e..000000000000 --- a/packages/typescriptlang-org/src/copy/id.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { defineMessages } from "react-intl" -import { comCopy } from "./id/community" -import { docCopy } from "./id/documentation" -import { handbookCopy } from "./id/handbook" -import { headCopy } from "./id/head-seo" -import { indexCopy } from "./id/index" -import { navCopy } from "./id/nav" -import { playCopy } from "./id/playground" -import { Copy, messages as englishMessages } from "./en" - -export const lang: Copy = defineMessages({ - ...englishMessages, - ...comCopy, - ...docCopy, - ...handbookCopy, - ...headCopy, - ...indexCopy, - ...navCopy, - ...playCopy, -}) diff --git a/packages/typescriptlang-org/src/copy/id/id.ts b/packages/typescriptlang-org/src/copy/id/id.ts new file mode 100644 index 000000000000..53fb8e5f5fa7 --- /dev/null +++ b/packages/typescriptlang-org/src/copy/id/id.ts @@ -0,0 +1,20 @@ +import { defineMessages } from "react-intl" +import { comCopy } from "./community" +import { docCopy } from "./documentation" +import { handbookCopy } from "./handbook" +import { headCopy } from "./head-seo" +import { indexCopy } from "./index" +import { navCopy } from "./nav" +import { playCopy } from "./playground" +import { Copy, messages as englishMessages } from "../en/en" + +export const lang: Copy = defineMessages({ + ...englishMessages, + ...comCopy, + ...docCopy, + ...handbookCopy, + ...headCopy, + ...indexCopy, + ...navCopy, + ...playCopy, +}) diff --git a/packages/typescriptlang-org/src/copy/ja.ts b/packages/typescriptlang-org/src/copy/ja.ts deleted file mode 100644 index ae5776206344..000000000000 --- a/packages/typescriptlang-org/src/copy/ja.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineMessages } from "react-intl" -import { navCopy } from "./ja/nav" -import { docCopy } from "./ja/documentation" -import { headCopy } from "./ja/head-seo" -import { playCopy } from "./ja/playground" -import { comCopy } from "./ja/community" -import { Copy, messages as englishMessages } from "./en" - -export const lang: Copy = defineMessages({ - ...englishMessages, - ...navCopy, - ...docCopy, - ...headCopy, - ...playCopy, - ...comCopy, -}) diff --git a/packages/typescriptlang-org/src/copy/ja/ja.ts b/packages/typescriptlang-org/src/copy/ja/ja.ts new file mode 100644 index 000000000000..b22fb4150809 --- /dev/null +++ b/packages/typescriptlang-org/src/copy/ja/ja.ts @@ -0,0 +1,16 @@ +import { defineMessages } from "react-intl" +import { navCopy } from "./nav" +import { docCopy } from "./documentation" +import { headCopy } from "./head-seo" +import { playCopy } from "./playground" +import { comCopy } from "./community" +import { Copy, messages as englishMessages } from "../en/en" + +export const lang: Copy = defineMessages({ + ...englishMessages, + ...navCopy, + ...docCopy, + ...headCopy, + ...playCopy, + ...comCopy, +}) diff --git a/packages/typescriptlang-org/src/copy/pl.ts b/packages/typescriptlang-org/src/copy/pl.ts deleted file mode 100644 index daa0b0d205f8..000000000000 --- a/packages/typescriptlang-org/src/copy/pl.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { defineMessages } from "react-intl" -import { Copy, messages as englishMessages } from "./en" -import { navCopy } from "./pl/nav" -import { indexCopy } from "./pl/index" -import { handbookCopy } from "./pl/handbook" -import { dtCopy } from "./pl/dt" -import { headCopy } from "./pl/head-seo" -import { playCopy } from "./pl/playground" - -export const lang: Copy = defineMessages({ - ...englishMessages, - ...navCopy, - ...indexCopy, - ...handbookCopy, - ...dtCopy, - ...headCopy, - ...playCopy, -}) diff --git a/packages/typescriptlang-org/src/copy/pl/pl.ts b/packages/typescriptlang-org/src/copy/pl/pl.ts new file mode 100644 index 000000000000..5dae860ca8ca --- /dev/null +++ b/packages/typescriptlang-org/src/copy/pl/pl.ts @@ -0,0 +1,18 @@ +import { defineMessages } from "react-intl" +import { Copy, messages as englishMessages } from "../en/en" +import { navCopy } from "./nav" +import { indexCopy } from "./index" +import { handbookCopy } from "./handbook" +import { dtCopy } from "./dt" +import { headCopy } from "./head-seo" +import { playCopy } from "./playground" + +export const lang: Copy = defineMessages({ + ...englishMessages, + ...navCopy, + ...indexCopy, + ...handbookCopy, + ...dtCopy, + ...headCopy, + ...playCopy, +}) diff --git a/packages/typescriptlang-org/src/copy/pt.ts b/packages/typescriptlang-org/src/copy/pt.ts deleted file mode 100644 index a8f7df3e54b1..000000000000 --- a/packages/typescriptlang-org/src/copy/pt.ts +++ /dev/null @@ -1,16 +0,0 @@ -import { defineMessages } from "react-intl" -import { Copy, messages as englishMessages } from "./en" -import { navCopy } from "./pt/nav" -import { docCopy } from "./pt/documentation" -import { indexCopy } from "./pt/index" -import { comCopy } from "./pt/community" -import { handbookCopy } from "./pt/handbook" - -export const lang: Copy = defineMessages({ - ...englishMessages, - ...navCopy, - ...docCopy, - ...indexCopy, - ...comCopy, - ...handbookCopy, -}) diff --git a/packages/typescriptlang-org/src/copy/pt/pt.ts b/packages/typescriptlang-org/src/copy/pt/pt.ts new file mode 100644 index 000000000000..04539a03cf6d --- /dev/null +++ b/packages/typescriptlang-org/src/copy/pt/pt.ts @@ -0,0 +1,16 @@ +import { defineMessages } from "react-intl" +import { Copy, messages as englishMessages } from "../en/en" +import { navCopy } from "./nav" +import { docCopy } from "./documentation" +import { indexCopy } from "./index" +import { comCopy } from "./community" +import { handbookCopy } from "./handbook" + +export const lang: Copy = defineMessages({ + ...englishMessages, + ...navCopy, + ...docCopy, + ...indexCopy, + ...comCopy, + ...handbookCopy, +}) diff --git a/packages/typescriptlang-org/src/copy/vo.ts b/packages/typescriptlang-org/src/copy/vo/vo.ts similarity index 51% rename from packages/typescriptlang-org/src/copy/vo.ts rename to packages/typescriptlang-org/src/copy/vo/vo.ts index 5c9da9294611..16036b998476 100644 --- a/packages/typescriptlang-org/src/copy/vo.ts +++ b/packages/typescriptlang-org/src/copy/vo/vo.ts @@ -1,7 +1,7 @@ import { defineMessages } from "react-intl" -import { navCopy } from "./vo/nav" -import { Copy, messages as englishMessages } from "./en" -import { comCopy } from "./en/community" +import { navCopy } from "./nav" +import { Copy, messages as englishMessages } from "../en/en" +import { comCopy } from "../en/community" export const lang: Copy = defineMessages({ ...navCopy, diff --git a/packages/typescriptlang-org/src/copy/zh.ts b/packages/typescriptlang-org/src/copy/zh.ts deleted file mode 100644 index cf0a0cd5d215..000000000000 --- a/packages/typescriptlang-org/src/copy/zh.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { defineMessages } from "react-intl" -import { playCopy } from "./zh/playground" -import { messages as chineseMessages } from "./zh" -import { navCopy } from "./zh/nav" -import { headCopy } from "./zh/head-seo" -import { docCopy } from "./zh/documentation" -import { indexCopy } from "./zh/index" -import { comCopy } from "./zh/community" -import { handbookCopy } from './zh/handbook' - -export const messages = { - ...chineseMessages, - ...navCopy, - ...docCopy, - ...headCopy, - ...indexCopy, - ...playCopy, - ...comCopy, - ...handbookCopy, -} - -export const lang = defineMessages(messages) diff --git a/packages/typescriptlang-org/src/copy/zh/zh.ts b/packages/typescriptlang-org/src/copy/zh/zh.ts new file mode 100644 index 000000000000..ca14985e24da --- /dev/null +++ b/packages/typescriptlang-org/src/copy/zh/zh.ts @@ -0,0 +1,22 @@ +import { defineMessages } from "react-intl" +import { playCopy } from "./playground" +import { messages as englishMessages } from "../en/en" +import { navCopy } from "./nav" +import { headCopy } from "./head-seo" +import { docCopy } from "./documentation" +import { indexCopy } from "./index" +import { comCopy } from "./community" +import { handbookCopy } from "./handbook" + +export const messages = { + ...englishMessages, + ...navCopy, + ...docCopy, + ...headCopy, + ...indexCopy, + ...playCopy, + ...comCopy, + ...handbookCopy, +} + +export const lang = defineMessages(messages) From f6faa950a25eacc7cce3b857c842e650d34f9370 Mon Sep 17 00:00:00 2001 From: Orta Date: Mon, 1 Feb 2021 08:51:39 +0000 Subject: [PATCH 3/6] Gitignores --- packages/tsconfig-reference/.gitignore | 4 ++++ packages/typescriptlang-org/.gitignore | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 packages/tsconfig-reference/.gitignore diff --git a/packages/tsconfig-reference/.gitignore b/packages/tsconfig-reference/.gitignore new file mode 100644 index 000000000000..ce4fef058907 --- /dev/null +++ b/packages/tsconfig-reference/.gitignore @@ -0,0 +1,4 @@ + +# Handled by @oss-docs/sync +copy/** +!copy/**/en diff --git a/packages/typescriptlang-org/.gitignore b/packages/typescriptlang-org/.gitignore index f149ec496d70..5c72739266e0 100644 --- a/packages/typescriptlang-org/.gitignore +++ b/packages/typescriptlang-org/.gitignore @@ -93,3 +93,7 @@ static/assets/typescript-handbook-beta.epub static/assets/typescript-handbook-beta.pdf /src/lib/release-info.json + +# Handled by @oss-docs/sync +src/copy/** +!src/copy/**/en From 84d1f7004a8ead45699fea1b86a024e2d67aa436 Mon Sep 17 00:00:00 2001 From: Orta Date: Mon, 1 Feb 2021 09:02:43 +0000 Subject: [PATCH 4/6] Add attribution for old localizations --- .../vendor/previousTranslations.json | 1137 +++++++++++++++++ 1 file changed, 1137 insertions(+) create mode 100644 packages/documentation/vendor/previousTranslations.json diff --git a/packages/documentation/vendor/previousTranslations.json b/packages/documentation/vendor/previousTranslations.json new file mode 100644 index 000000000000..8e573cdba3ba --- /dev/null +++ b/packages/documentation/vendor/previousTranslations.json @@ -0,0 +1,1137 @@ +{ + "copy/id/Nightly Builds.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + }, + { + "name": "StefanRein", + "gravatar": "078daaad2c37d829a53e4db1827c0961", + "count": 2 + }, + { + "name": "macdja38", + "gravatar": "80a6ce7abf27e4f9eced990853689b4d", + "count": 1 + } + ], + "total": 7 + }, + "copy/id/javascript/Creating DTS files From JS.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/javascript/Intro to JS with TS.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/javascript/JSDoc Reference.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/project-config/Configuring Watch.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + }, + { + "name": "0xflotus", + "gravatar": "f9d24e528b0f500d275ca815ec471097", + "count": 1 + }, + { + "name": "Philip Kirkbride", + "gravatar": "e2581b53db32340d7e1b5be6b99c2bb1", + "count": 1 + } + ], + "total": 7 + }, + "copy/id/reference/Decorators.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 19 + }, + "copy/id/reference/Iterators and Generators.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Kevin Sanders", + "gravatar": "21bb691b777fca0080f345a41c6c38c4", + "count": 1 + } + ], + "total": 12 + }, + "copy/id/reference/JSX.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 6 + }, + { + "name": "David Zulaica", + "gravatar": "da0a821c09edbd8369777d622b446cc2", + "count": 3 + }, + { + "name": "Kanchalai Tanglertsampan", + "gravatar": "c8404f96910ba93ddc3e881b4bff24a4", + "count": 3 + } + ], + "total": 30 + }, + "copy/id/reference/Mixins.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/reference/Symbols.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 2 + }, + { + "name": "f", + "gravatar": "c329e72c364be1b3279f538bce4b025f", + "count": 1 + }, + { + "name": "user135711", + "gravatar": "b2861419ffde55d6b31a7da6980e0b9a", + "count": 1 + } + ], + "total": 11 + }, + "copy/id/tutorials/Babel with TypeScript.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/tutorials/DOM Manipulation.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/id/tutorials/React.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 7 + }, + { + "name": "Brooks Becton", + "gravatar": "adc0bb4710a7ca48ed5e30a5679af3b3", + "count": 1 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Achim Weimert", + "gravatar": "b8f0329cbb6cc9c7c6b08b2c48d5662f", + "count": 1 + } + ], + "total": 16 + }, + "copy/id/tutorials/TypeScript Tooling in 5 minutes.md": { + "top": [ + { + "name": "Burhanudin Dwi Prakoso", + "gravatar": "b8c12cf200f658e4596f873d62406129", + "count": 8 + } + ], + "total": 1 + }, + "copy/ja/Nightly Builds.md": { + "top": [ + { + "name": "Masato Urai", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 2 + }, + { + "name": "StefanRein", + "gravatar": "078daaad2c37d829a53e4db1827c0961", + "count": 2 + }, + { + "name": "uraway", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 1 + } + ], + "total": 9 + }, + "copy/ja/javascript/Creating DTS files From JS.md": { + "top": [ + { + "name": "Masato Urai", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 3 + }, + { + "name": "uraway", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 1 + } + ], + "total": 3 + }, + "copy/ja/javascript/Intro to JS with TS.md": { + "top": [ + { + "name": "Masato Urai", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 2 + }, + { + "name": "uraway", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 1 + } + ], + "total": 3 + }, + "copy/ja/javascript/JSDoc Reference.md": { + "top": [ + { + "name": "Masato Urai", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 3 + }, + { + "name": "uraway", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 1 + }, + { + "name": "Nathan Shively-Sanders", + "gravatar": "8c5596e6ef2b41132cee585c9b146116", + "count": 1 + } + ], + "total": 4 + }, + "copy/ja/javascript/Type Checking JavaScript Files.md": { + "top": [ + { + "name": "Harry Nguyen", + "gravatar": "386e27141a29f5c1076619afc140ffb4", + "count": 51 + }, + { + "name": "Masato Urai", + "gravatar": "6b10b84436915f5e96900a8b1d2452d9", + "count": 3 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 3 + }, + { + "name": "Nathan Shively-Sanders", + "gravatar": "8c5596e6ef2b41132cee585c9b146116", + "count": 2 + } + ], + "total": 20 + }, + "copy/ko/reference/Declaration Merging.md": { + "top": [ + { + "name": "seunghee", + "gravatar": "a0b5fde65c7c795d4d346c3bcf8006bc", + "count": 6 + }, + { + "name": "seunghee114", + "gravatar": "4cd5d7f02879b9d0228ab30ec8136693", + "count": 2 + } + ], + "total": 20 + }, + "copy/ko/reference/Iterators and Generators.md": { + "top": [ + { + "name": "Sowon Jung", + "gravatar": "b88f9aefd4ded7b002261f710adaf2ef", + "count": 8 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Kevin Sanders", + "gravatar": "21bb691b777fca0080f345a41c6c38c4", + "count": 1 + } + ], + "total": 12 + }, + "copy/ko/reference/JSX.md": { + "top": [ + { + "name": "Begachu", + "gravatar": "ebe85328285da57903ef431afe95b536", + "count": 12 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 6 + }, + { + "name": "David Zulaica", + "gravatar": "da0a821c09edbd8369777d622b446cc2", + "count": 3 + }, + { + "name": "Kanchalai Tanglertsampan", + "gravatar": "c8404f96910ba93ddc3e881b4bff24a4", + "count": 3 + } + ], + "total": 30 + }, + "copy/ko/reference/Symbols.md": { + "top": [ + { + "name": "seunghee", + "gravatar": "a0b5fde65c7c795d4d346c3bcf8006bc", + "count": 6 + }, + { + "name": "seunghee114", + "gravatar": "4cd5d7f02879b9d0228ab30ec8136693", + "count": 2 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 2 + }, + { + "name": "f", + "gravatar": "c329e72c364be1b3279f538bce4b025f", + "count": 1 + } + ], + "total": 12 + }, + "copy/ko/reference/Triple-Slash Directives.md": { + "top": [ + { + "name": "seunghee", + "gravatar": "a0b5fde65c7c795d4d346c3bcf8006bc", + "count": 6 + }, + { + "name": "seunghee114", + "gravatar": "4cd5d7f02879b9d0228ab30ec8136693", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Kevin Sanders", + "gravatar": "21bb691b777fca0080f345a41c6c38c4", + "count": 1 + } + ], + "total": 13 + }, + "copy/ko/reference/Type Inference.md": { + "top": [ + { + "name": "ire4564", + "gravatar": "c521ea30f0397f1c3d5750d88ac0e0c1", + "count": 11 + }, + { + "name": "Daniel Rosenwasser", + "gravatar": "8499bf678149d617cc71a23afb377736", + "count": 10 + }, + { + "name": "Martin Hanzel", + "gravatar": "306526665628a202cb974484101d3bcf", + "count": 2 + }, + { + "name": "John Jago", + "gravatar": "302329c4365a60e401442b1001adaf39", + "count": 1 + } + ], + "total": 13 + }, + "copy/ko/reference/Utility Types.md": { + "top": [ + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 21 + }, + { + "name": "bob1983", + "gravatar": "7bb14891ac3b3865d24d3842118dd12d", + "count": 4 + }, + { + "name": "seunghee114", + "gravatar": "4cd5d7f02879b9d0228ab30ec8136693", + "count": 3 + }, + { + "name": "Christian Rackerseder", + "gravatar": "f02fb05277a4d863bada6a4d86f51aa2", + "count": 2 + } + ], + "total": 22 + }, + "copy/ko/tutorials/Babel with TypeScript.md": { + "top": [ + { + "name": "Seohyun Yoon", + "gravatar": "38bf43b006d7897609bd23dead3612fa", + "count": 9 + } + ], + "total": 1 + }, + "copy/ko/tutorials/React.md": { + "top": [ + { + "name": "Seohyun Yoon", + "gravatar": "38bf43b006d7897609bd23dead3612fa", + "count": 7 + }, + { + "name": "Brooks Becton", + "gravatar": "adc0bb4710a7ca48ed5e30a5679af3b3", + "count": 1 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Achim Weimert", + "gravatar": "b8f0329cbb6cc9c7c6b08b2c48d5662f", + "count": 1 + } + ], + "total": 16 + }, + "copy/ko/tutorials/TypeScript Tooling in 5 minutes.md": { + "top": [ + { + "name": "Seohyun Yoon", + "gravatar": "38bf43b006d7897609bd23dead3612fa", + "count": 8 + } + ], + "total": 1 + }, + "copy/pl/handbook-v1/The Handbook.md": { + "top": [ + { + "name": "Marta", + "gravatar": "2ff8775c6e347c50903f27eaaa2b105d", + "count": 6 + } + ], + "total": 1 + }, + "copy/pt/Nightly Builds.md": { + "top": [ + { + "name": "codingsh", + "gravatar": "fb04f0ef8cf33544f468cc8f4322956f", + "count": 6 + }, + { + "name": "StefanRein", + "gravatar": "078daaad2c37d829a53e4db1827c0961", + "count": 2 + }, + { + "name": "macdja38", + "gravatar": "80a6ce7abf27e4f9eced990853689b4d", + "count": 1 + } + ], + "total": 7 + }, + "copy/pt/javascript/Creating DTS files From JS.md": { + "top": [ + { + "name": "codingsh", + "gravatar": "fb04f0ef8cf33544f468cc8f4322956f", + "count": 6 + }, + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 2 + }, + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 1 + } + ], + "total": 3 + }, + "copy/pt/javascript/Intro to JS with TS.md": { + "top": [ + { + "name": "codingsh", + "gravatar": "fb04f0ef8cf33544f468cc8f4322956f", + "count": 6 + } + ], + "total": 1 + }, + "copy/pt/javascript/JSDoc Reference.md": { + "top": [ + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 7 + } + ], + "total": 1 + }, + "copy/pt/javascript/Type Checking JavaScript Files.md": { + "top": [ + { + "name": "Harry Nguyen", + "gravatar": "386e27141a29f5c1076619afc140ffb4", + "count": 51 + }, + { + "name": "Orta Therox", + "gravatar": "f116cb3be23153ec08b94e8bd4dbcfeb", + "count": 17 + }, + { + "name": "Lucas Henrique", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 4 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 3 + }, + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 2 + } + ], + "total": 20 + }, + "copy/pt/project-config/Configuring Watch.md": { + "top": [ + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 7 + }, + { + "name": "Lucas Henrique", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 2 + }, + { + "name": "0xflotus", + "gravatar": "f9d24e528b0f500d275ca815ec471097", + "count": 1 + }, + { + "name": "Philip Kirkbride", + "gravatar": "e2581b53db32340d7e1b5be6b99c2bb1", + "count": 1 + } + ], + "total": 8 + }, + "copy/pt/project-config/Project References.md": { + "top": [ + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 10 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 2 + }, + { + "name": "Lucas Henrique", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 1 + } + ], + "total": 18 + }, + "copy/pt/project-config/tsconfig.json.md": { + "top": [ + { + "name": "Jhonnas Keven", + "gravatar": "0baaaa95bb105c2caff4e2ab89a52aa4", + "count": 3 + }, + { + "name": "J-keven", + "gravatar": "33ddabb61abe75fbbb4aec2994fd1521", + "count": 2 + }, + { + "name": "Lucas Santos", + "gravatar": "0a8f40c6cc23fb6c8aad4de732c5abaf", + "count": 1 + } + ], + "total": 4 + }, + "copy/pt/reference/Declaration Merging.md": { + "top": [ + { + "name": "luk3skyw4lker", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 7 + }, + { + "name": "Lucas Henrique", + "gravatar": "41c471de17c0920eb36de6c653234713", + "count": 1 + } + ], + "total": 20 + }, + "copy/pt/reference/Decorators.md": { + "top": [ + { + "name": "hmartiins", + "gravatar": "434a8a20e1affe0ef3c8cc3ca3508a4f", + "count": 6 + }, + { + "name": "Mohamed Hegazy", + "gravatar": "17e2da9785d45119a4c4cfed99e40d9c", + "count": 3 + }, + { + "name": "Eli Barzilay", + "gravatar": "74530a34228bb8fa1f87ae92c78909b7", + "count": 1 + } + ], + "total": 21 + }, + "copy/pt/reference/Iterators and Generators.md": { + "top": [ + { + "name": "Weslley Luiz", + "gravatar": "391ed3ca0f6f8a3730651923b7441295", + "count": 7 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Kevin Sanders", + "gravatar": "21bb691b777fca0080f345a41c6c38c4", + "count": 1 + } + ], + "total": 12 + }, + "copy/pt/reference/JSX.md": { + "top": [ + { + "name": "Weslley Luiz", + "gravatar": "b5497367baf3228837bfa8067102e37b", + "count": 10 + }, + { + "name": "Ryan Cavanaugh", + "gravatar": "2484d99c8a58bc51ae587e07a05ba6e2", + "count": 6 + }, + { + "name": "David Zulaica", + "gravatar": "da0a821c09edbd8369777d622b446cc2", + "count": 3 + }, + { + "name": "Kanchalai Tanglertsampan", + "gravatar": "c8404f96910ba93ddc3e881b4bff24a4", + "count": 3 + } + ], + "total": 30 + }, + "copy/pt/reference/Mixins.md": { + "top": [ + { + "name": "Henrique Martins", + "gravatar": "434a8a20e1affe0ef3c8cc3ca3508a4f", + "count": 6 + }, + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 2 + }, + { + "name": "Ben Lichtman", + "gravatar": "00da4b975d4970a72ea213bfcdb80942", + "count": 1 + } + ], + "total": 3 + }, + "copy/pt/reference/Module Resolution.md": { + "top": [ + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 15 + }, + { + "name": "Weslley Luiz", + "gravatar": "391ed3ca0f6f8a3730651923b7441295", + "count": 6 + }, + { + "name": "Andy Hanson", + "gravatar": "53f3bf1fab05451f834d0995fa07e47a", + "count": 6 + }, + { + "name": "Daniel Rosenwasser", + "gravatar": "8499bf678149d617cc71a23afb377736", + "count": 6 + } + ], + "total": 32 + }, + "copy/pt/reference/Modules.md": { + "top": [ + { + "name": "Daniel Rosenwasser", + "gravatar": "8499bf678149d617cc71a23afb377736", + "count": 22 + }, + { + "name": "Letícia Hissae Yanaguya", + "gravatar": "d7b1e31bf6cd937b9afb8d1c263a486b", + "count": 8 + }, + { + "name": "LeticiaYanaguya", + "gravatar": "d7b1e31bf6cd937b9afb8d1c263a486b", + "count": 8 + }, + { + "name": "Orta Therox", + "gravatar": "f116cb3be23153ec08b94e8bd4dbcfeb", + "count": 6 + } + ], + "total": 37 + }, + "copy/pt/reference/Namespaces and Modules.md": { + "top": [ + { + "name": "Mohamed Hegazy", + "gravatar": "17e2da9785d45119a4c4cfed99e40d9c", + "count": 19 + }, + { + "name": "Jonathas H. Moraes", + "gravatar": "8803d8a7172a23d93d1dd13f50229e0e", + "count": 9 + }, + { + "name": "Orta Therox", + "gravatar": "f116cb3be23153ec08b94e8bd4dbcfeb", + "count": 1 + }, + { + "name": "William Shepherd", + "gravatar": "376fd9f7baa5237d630d53fbf40963c9", + "count": 1 + } + ], + "total": 17 + }, + "copy/pt/reference/Namespaces.md": { + "top": [ + { + "name": "Rafael Dantas", + "gravatar": "9581981eb4ad998902a7e6ed58f92983", + "count": 7 + }, + { + "name": "Daniel Rosenwasser", + "gravatar": "8499bf678149d617cc71a23afb377736", + "count": 3 + }, + { + "name": "Orta Therox", + "gravatar": "f116cb3be23153ec08b94e8bd4dbcfeb", + "count": 1 + }, + { + "name": "Shingo Yamazaki", + "gravatar": "50fc0fdc2327ecbe7350645812de52e3", + "count": 1 + } + ], + "total": 18 + }, + "copy/pt/reference/Symbols.md": { + "top": [ + { + "name": "Rafael Dantas", + "gravatar": "9581981eb4ad998902a7e6ed58f92983", + "count": 7 + }, + { + "name": "Gabriel Burdeti", + "gravatar": "28ff7ada33ca80bfae575ae1321176ca", + "count": 2 + }, + { + "name": "f", + "gravatar": "c329e72c364be1b3279f538bce4b025f", + "count": 1 + }, + { + "name": "user135711", + "gravatar": "b2861419ffde55d6b31a7da6980e0b9a", + "count": 1 + } + ], + "total": 11 + }, + "copy/pt/reference/Triple-Slash Directives.md": { + "top": [ + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 15 + }, + { + "name": "Weslley Luiz", + "gravatar": "391ed3ca0f6f8a3730651923b7441295", + "count": 9 + }, + { + "name": "Kevin Sanders", + "gravatar": "21bb691b777fca0080f345a41c6c38c4", + "count": 1 + }, + { + "name": "Marc Kassay", + "gravatar": "365e118c75387fcbb180c5f41c4e1314", + "count": 1 + } + ], + "total": 12 + }, + "copy/pt/reference/Type Compatibility.md": { + "top": [ + { + "name": "Perkles", + "gravatar": "8e49171173319c761baee81a660405b9", + "count": 5 + }, + { + "name": "Mohamed Hegazy", + "gravatar": "17e2da9785d45119a4c4cfed99e40d9c", + "count": 4 + } + ], + "total": 21 + }, + "copy/pt/reference/Type Inference.md": { + "top": [ + { + "name": "Perkles", + "gravatar": "8e49171173319c761baee81a660405b9", + "count": 5 + }, + { + "name": "Martin Hanzel", + "gravatar": "306526665628a202cb974484101d3bcf", + "count": 2 + } + ], + "total": 15 + }, + "copy/pt/reference/Utility Types.md": { + "top": [ + { + "name": "christian", + "gravatar": "1f58f226873fbbebcb8d4741b56fc99c", + "count": 54 + }, + { + "name": "Perkles", + "gravatar": "8e49171173319c761baee81a660405b9", + "count": 8 + }, + { + "name": "bob1983", + "gravatar": "7bb14891ac3b3865d24d3842118dd12d", + "count": 4 + }, + { + "name": "Lucas Santos", + "gravatar": "0a8f40c6cc23fb6c8aad4de732c5abaf", + "count": 2 + } + ], + "total": 23 + }, + "copy/pt/reference/Variable Declarations.md": { + "top": [ + { + "name": "Perkles", + "gravatar": "8e49171173319c761baee81a660405b9", + "count": 3 + }, + { + "name": "Vimal Raghubir", + "gravatar": "9bd70673d4a0c3ab8461871af1896215", + "count": 3 + } + ], + "total": 27 + }, + "copy/pt/tutorials/Babel with TypeScript.md": { + "top": [ + { + "name": "luizdopc", + "gravatar": "16a281562d52d3aab6cb1688c10b357d", + "count": 7 + } + ], + "total": 1 + }, + "copy/pt/tutorials/DOM Manipulation.md": { + "top": [ + { + "name": "Ethan Arrowood", + "gravatar": "b9fb0cf118e9cbf9a15d52d7071e554b", + "count": 6 + }, + { + "name": "David Alves de Souza", + "gravatar": "383687061a2cb3042863b7ef24f1c0ef", + "count": 5 + }, + { + "name": "Orta Therox", + "gravatar": "bcfa5d8f5699be0134ffb16424b42610", + "count": 5 + }, + { + "name": "davidalves1", + "gravatar": "383687061a2cb3042863b7ef24f1c0ef", + "count": 2 + }, + { + "name": "Shane Riley", + "gravatar": "9f6f9c0b100d371267f07a12f73edf9d", + "count": 1 + } + ], + "total": 8 + }, + "copy/pt/tutorials/React.md": { + "top": [ + { + "name": "codingsh", + "gravatar": "fb04f0ef8cf33544f468cc8f4322956f", + "count": 6 + }, + { + "name": "Brooks Becton", + "gravatar": "adc0bb4710a7ca48ed5e30a5679af3b3", + "count": 1 + }, + { + "name": "Orta Therox", + "gravatar": "28e997da43c10d99aa99273b48efe8cf", + "count": 1 + }, + { + "name": "Achim Weimert", + "gravatar": "b8f0329cbb6cc9c7c6b08b2c48d5662f", + "count": 1 + } + ], + "total": 16 + }, + "copy/pt/tutorials/TypeScript Tooling in 5 minutes.md": { + "top": [ + { + "name": "codingsh", + "gravatar": "fb04f0ef8cf33544f468cc8f4322956f", + "count": 6 + } + ], + "total": 1 + }, + "copy/vo/handbook-v1/Basic Types.md": { + "top": [ + { + "name": "Orta Therox", + "gravatar": "f116cb3be23153ec08b94e8bd4dbcfeb", + "count": 11 + }, + { + "name": "Nathan Shively-Sanders", + "gravatar": "f2d3b194d100bd25842ca048ab101408", + "count": 4 + }, + { + "name": "Martin Veith", + "gravatar": "c14e40955314d925ddde906ee48fc437", + "count": 3 + } + ], + "total": 37 + }, + "copy/zh/Nightly Builds.md": { + "top": [ + { + "name": "zhongsp", + "gravatar": "d1801baeb6ac60d51720723177c6c8b0", + "count": 6 + }, + { + "name": "StefanRein", + "gravatar": "078daaad2c37d829a53e4db1827c0961", + "count": 2 + }, + { + "name": "macdja38", + "gravatar": "80a6ce7abf27e4f9eced990853689b4d", + "count": 1 + } + ], + "total": 7 + } +} From eb81969635c6002bf786a4f1e83ca17ae7fe81fc Mon Sep 17 00:00:00 2001 From: Orta Date: Mon, 1 Feb 2021 09:08:11 +0000 Subject: [PATCH 5/6] Adds doc sync to CI --- .github/workflows/CI.yml | 3 +++ .github/workflows/deploy-prod.yml | 1 + .github/workflows/v2-merged-staging.yml | 1 + README.md | 4 ++++ 4 files changed, 9 insertions(+) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index aba7886d61d5..bfc6e57eb218 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -34,6 +34,9 @@ jobs: # Verify dependencies are hooked up right - run: node test/verifyPackageVersions.js + # Grab localizations + - run: yarn docs-sync pull microsoft/TypeScript-Website-localizations#main 1 + # Build the packages - run: yarn bootstrap - run: yarn workspace typescriptlang-org build diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml index f9d149a6cae9..5ebde5459034 100644 --- a/.github/workflows/deploy-prod.yml +++ b/.github/workflows/deploy-prod.yml @@ -22,6 +22,7 @@ jobs: - name: Build website v2 run: | yarn install + yarn docs-sync pull microsoft/TypeScript-Website-localizations#main 1 yarn bootstrap yarn build yarn build-site diff --git a/.github/workflows/v2-merged-staging.yml b/.github/workflows/v2-merged-staging.yml index c834c7a25eef..eb2ba4d923c0 100644 --- a/.github/workflows/v2-merged-staging.yml +++ b/.github/workflows/v2-merged-staging.yml @@ -26,6 +26,7 @@ jobs: - name: Prepare website v2 run: | yarn install + yarn docs-sync pull microsoft/TypeScript-Website-localizations#main 1 yarn bootstrap yarn build env: diff --git a/README.md b/README.md index 9e6c4f5ccdad..3b2b9a1d8bdc 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,10 @@ code . # Then: yarn bootstrap +# Optional, grab the translations: +yarn docs-sync pull microsoft/TypeScript-Website-localizations#main 1 + +# Now you can start up the website yarn start ``` From 8b5fe485c090524b39319a103a60843d6ebf5f76 Mon Sep 17 00:00:00 2001 From: Orta Date: Mon, 1 Feb 2021 09:54:42 +0000 Subject: [PATCH 6/6] Get all the pages rendering --- .../ingestion/createRootPagesLocalized.ts | 13 +++++++-- .../src/templates/markdown-twoslash.scss | 2 +- spellcheck.json | 28 +++++++++++-------- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/packages/typescriptlang-org/lib/bootup/ingestion/createRootPagesLocalized.ts b/packages/typescriptlang-org/lib/bootup/ingestion/createRootPagesLocalized.ts index 1d74142c749c..b003f6328ddb 100644 --- a/packages/typescriptlang-org/lib/bootup/ingestion/createRootPagesLocalized.ts +++ b/packages/typescriptlang-org/lib/bootup/ingestion/createRootPagesLocalized.ts @@ -25,8 +25,15 @@ export const createRootPagesLocalized = async ( const langs = fs .readdirSync(languageRootDir) - .filter(f => f.endsWith(".ts") && f.length === 5) - .map(f => path.basename(f, ".ts")) + .filter( + f => + !( + f.endsWith(".ts") || + f.endsWith(".ts") || + f.endsWith(".md") || + f.startsWith(".") + ) + ) const files = recursiveReadDirSync(rootPagesDir) .filter(f => !f.startsWith(".")) // only useful files @@ -48,7 +55,7 @@ export const createRootPagesLocalized = async ( // prettier-ignore originalSitePath = originalSitePath.substring(0, originalSitePath.length - 3) } - + console.log(langs) langs.forEach(lang => { if (!isMultiLingual && lang !== "en") return diff --git a/packages/typescriptlang-org/src/templates/markdown-twoslash.scss b/packages/typescriptlang-org/src/templates/markdown-twoslash.scss index 64f3139139d7..5ec807c2c52a 100644 --- a/packages/typescriptlang-org/src/templates/markdown-twoslash.scss +++ b/packages/typescriptlang-org/src/templates/markdown-twoslash.scss @@ -185,7 +185,7 @@ pre { } } -.dark-theme pre { +.dark-theme .markdown pre { background-color: #d8d8d8; border-color: #ddd; filter: invert(98%) hue-rotate(180deg); diff --git a/spellcheck.json b/spellcheck.json index 7ebbb3f1f96d..93a24a1b984f 100644 --- a/spellcheck.json +++ b/spellcheck.json @@ -26,6 +26,7 @@ "camelcase", "changelog", "circleci", + "cla-bot", "cli", "cocoadocs", "cocoapods", @@ -61,15 +62,16 @@ "downleveling", "ecma", "env", + "epub", "es2015", "es2016", "es6", - "ESLint's", + "eslint's", "eslint", "ezel", "facebook", "fastlane", - "Favor", + "favor", "flexbox", "frontend", "frp", @@ -90,9 +92,9 @@ "html5", "hypergrowth", "imagemagick", - "Informationals", + "informationals", "inline", - "IntelliJ", + "intellij", "intellisense", "interop", "isac", @@ -124,10 +126,12 @@ "memcached", "microservice", "microservices", + "microsoft", "modeling", + "monaco", "mongo", "mongodb", - "Movie", + "movie", "moya", "mutablilty", "mvc", @@ -135,11 +139,11 @@ "node.js", "nodejs", "nodemon", - "non-Artsy", + "non-artsy", "npm", "npm", "nullability", - "OAuth", + "oauth", "objc.io", "oftentimes", "ok", @@ -164,7 +168,7 @@ "plugins", "podspec", "polyfill", - "post-Artsy", + "post-artsy", "postgres", "postgres", "pr", @@ -181,7 +185,7 @@ "redis", "redux", "refetch", - "renderProps", + "renderprops", "repo", "rfc", "rfcs", @@ -216,8 +220,10 @@ "trello", "ts", "tsconfig.json", + "tsconfig", "tslib", "tslint", + "twoslash", "typescript-eslint", "typings", "typings", @@ -225,7 +231,7 @@ "uiview", "unclutter", "uppercase", - "URIs", + "uris", "url", "v2", "v8", @@ -233,7 +239,7 @@ "visualstudios.com", "voila", "vscode", - "Vue", + "vue", "webhook", "webhooks", "webpack-y",