From 75e51094a8a46857ddabb36542bd36d7a36b8595 Mon Sep 17 00:00:00 2001 From: takefumi-yoshii Date: Thu, 13 Feb 2020 10:19:24 +0900 Subject: [PATCH 1/5] copy file --- .../copy/ja/TypeScript/Primitives/Literals.ts | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts new file mode 100644 index 000000000000..ffb151c19aea --- /dev/null +++ b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts @@ -0,0 +1,65 @@ +// TypeScript has some fun special cases for literals in +// source code. + +// In part, a lot of the support is covered in type widening +// and narrowing ( example:type-widening-narrowing ) and it's +// worth covering that first. + +// A literal is a more concrete subtype of a collective type. +// What this means is that "Hello World" is a string, but a +// string is not "Hello World" inside the type system. + +const helloWorld = "Hello World"; +let hiWorld = "Hi World"; // this is a string because it is let + +// This function takes all strings +declare function allowsAnyString(arg: string); +allowsAnyString(helloWorld); +allowsAnyString(hiWorld); + +// This function only accepts the string literal "Hello World" +declare function allowsOnlyHello(arg: "Hello World"); +allowsOnlyHello(helloWorld); +allowsOnlyHello(hiWorld); + +// This lets you declare APIs which use unions to say it +// only accepts a particular literal: + +declare function allowsFirstFiveNumbers(arg: 1 | 2 | 3 | 4 | 5); +allowsFirstFiveNumbers(1); +allowsFirstFiveNumbers(10); + +let potentiallyAnyNumber = 3; +allowsFirstFiveNumbers(potentiallyAnyNumber); + +// At first glance, this rule isn't applied to complex objects. + +const myUser = { + name: "Sabrina" +}; + +// See how it transforms `name: "Sabrina"` to `name: string` +// even though it is defined as a constant. This is because +// the name can still change any time: + +myUser.name = "Cynthia"; + +// Because myUser's name property can change, TypeScript +// cannot use the literal version in the type system. There +// is a feature which will allow you to do this however. + +const myUnchangingUser = { + name: "Fatma" +} as const; + +// When "as const" is applied to the object, then it becomes +// a object literal which doesn't change instead of a +// mutable object which can. + +myUnchangingUser.name = "Raîssa"; + +// "as const" is a great tool for fixtured data, and places +// where you treat code as literals inline. "as const" also +// works with arrays: + +const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; From 9356366eb9bfd3a5d89d4e7f5cb954e99602c7a8 Mon Sep 17 00:00:00 2001 From: takefumi-yoshii Date: Thu, 13 Feb 2020 11:35:29 +0900 Subject: [PATCH 2/5] translate into japanese --- .../copy/ja/TypeScript/Primitives/Literals.ts | 52 +++++++++---------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts index ffb151c19aea..58ee246532c7 100644 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts +++ b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts @@ -1,29 +1,29 @@ -// TypeScript has some fun special cases for literals in -// source code. +// TypeScriptには、ソースコードにリテラルを用いた +// 特別な面白いケースがあります。 -// In part, a lot of the support is covered in type widening -// and narrowing ( example:type-widening-narrowing ) and it's -// worth covering that first. +// これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。 +// (例:type-widening-narrowing) +// そして、はじめにそれを網羅する価値があります。 -// A literal is a more concrete subtype of a collective type. -// What this means is that "Hello World" is a string, but a -// string is not "Hello World" inside the type system. +// リテラルは集合型よりも具体的なサブタイプです。 +// どういうことかと言うと、型システム内部では +// 「Hello World」は文字列ですが、文字列は「Hello World」ではありません。 const helloWorld = "Hello World"; -let hiWorld = "Hi World"; // this is a string because it is let +let hiWorld = "Hi World"; // これはletなのでstring型です -// This function takes all strings +// この関数は、すべての文字列を受け入れます declare function allowsAnyString(arg: string); allowsAnyString(helloWorld); allowsAnyString(hiWorld); -// This function only accepts the string literal "Hello World" +// この関数は、文字列リテラル「Hello World」のみを受け入れます declare function allowsOnlyHello(arg: "Hello World"); allowsOnlyHello(helloWorld); allowsOnlyHello(hiWorld); -// This lets you declare APIs which use unions to say it -// only accepts a particular literal: +// これにより、共用体型を使用して特定のリテラルのみを受け入れる +// APIを宣言することができます declare function allowsFirstFiveNumbers(arg: 1 | 2 | 3 | 4 | 5); allowsFirstFiveNumbers(1); @@ -32,34 +32,34 @@ allowsFirstFiveNumbers(10); let potentiallyAnyNumber = 3; allowsFirstFiveNumbers(potentiallyAnyNumber); -// At first glance, this rule isn't applied to complex objects. +// しかし、このルールは混み入ったオブジェクトには適用されません。 const myUser = { name: "Sabrina" }; -// See how it transforms `name: "Sabrina"` to `name: string` -// even though it is defined as a constant. This is because -// the name can still change any time: +// 定数として定義された `name:"Sabrina"` であっても +// `name:string` に変換されてしまう様子を見てください。 +// この理由は、名前はいつでも変更できるからです。 myUser.name = "Cynthia"; -// Because myUser's name property can change, TypeScript -// cannot use the literal version in the type system. There -// is a feature which will allow you to do this however. +// なぜならmyUserのnameプロパティは変更できるため、 +// TypeScriptは型システムにおいてリテラルバージョンを使用できません。 +// しかしながら、次の機能でこれを許容することができます。 const myUnchangingUser = { name: "Fatma" } as const; -// When "as const" is applied to the object, then it becomes -// a object literal which doesn't change instead of a -// mutable object which can. +// 「as const」がオブジェクトに適用されると、 +// 変更できるオブジェクトの代わりに、 +// 変更できないオブジェクトになります。 myUnchangingUser.name = "Raîssa"; -// "as const" is a great tool for fixtured data, and places -// where you treat code as literals inline. "as const" also -// works with arrays: +// 「as const」は固定データのための素晴らしいツールであり、 +// コード中であっても、インラインリテラルとして処理されます。 +// 「as const」は配列でも動作します。 const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; From b91faf2f54d758e3f6fbcdb555c4f0209783abb8 Mon Sep 17 00:00:00 2001 From: takefumi-yoshii Date: Fri, 14 Feb 2020 12:01:04 +0900 Subject: [PATCH 3/5] fix to example --- .../copy/ja/TypeScript/Primitives/Literals.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts index 58ee246532c7..e52d3fb02112 100644 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts +++ b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts @@ -2,7 +2,7 @@ // 特別な面白いケースがあります。 // これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。 -// (例:type-widening-narrowing) +// ( example:type-widening-narrowing ) // そして、はじめにそれを網羅する価値があります。 // リテラルは集合型よりも具体的なサブタイプです。 From 7a05343789b85f92a7d61628bcd457eb57120285 Mon Sep 17 00:00:00 2001 From: takefumi-yoshii Date: Sun, 16 Feb 2020 18:30:41 +0900 Subject: [PATCH 4/5] fix wording --- .../copy/ja/TypeScript/Primitives/Literals.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts index e52d3fb02112..2721e080914c 100644 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts +++ b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts @@ -10,7 +10,7 @@ // 「Hello World」は文字列ですが、文字列は「Hello World」ではありません。 const helloWorld = "Hello World"; -let hiWorld = "Hi World"; // これはletなのでstring型です +let hiWorld = "Hi World"; // これはletなので文字列型です // この関数は、すべての文字列を受け入れます declare function allowsAnyString(arg: string); @@ -39,20 +39,20 @@ const myUser = { }; // 定数として定義された `name:"Sabrina"` であっても -// `name:string` に変換されてしまう様子を見てください。 -// この理由は、名前はいつでも変更できるからです。 +// `name:string` に変換されてしまいます。 +// こうなるのは、nameプロパティがいつでも変更できるからです。 myUser.name = "Cynthia"; // なぜならmyUserのnameプロパティは変更できるため、 -// TypeScriptは型システムにおいてリテラルバージョンを使用できません。 +// TypeScriptは型システムにおいてリテラル型を使用できません。 // しかしながら、次の機能でこれを許容することができます。 const myUnchangingUser = { name: "Fatma" } as const; -// 「as const」がオブジェクトに適用されると、 +// 「as const」をオブジェクトに適用すると、 // 変更できるオブジェクトの代わりに、 // 変更できないオブジェクトになります。 From 71b433af0c1e54556e3743104541dd3e9b2756f7 Mon Sep 17 00:00:00 2001 From: takefumi-yoshii Date: Mon, 17 Feb 2020 10:18:38 +0900 Subject: [PATCH 5/5] fix wording --- .../copy/ja/TypeScript/Primitives/Literals.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts index 2721e080914c..b56e81fb59ad 100644 --- a/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts +++ b/packages/playground-examples/copy/ja/TypeScript/Primitives/Literals.ts @@ -1,5 +1,5 @@ // TypeScriptには、ソースコードにリテラルを用いた -// 特別な面白いケースがあります。 +// とても面白い利用例があります。 // これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。 // ( example:type-widening-narrowing ) @@ -58,8 +58,8 @@ const myUnchangingUser = { myUnchangingUser.name = "Raîssa"; -// 「as const」は固定データのための素晴らしいツールであり、 -// コード中であっても、インラインリテラルとして処理されます。 +// 「as const」はコード中でインラインリテラルを扱ったり、 +// 固定データを扱うための素晴らしいツールです。 // 「as const」は配列でも動作します。 const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const;