-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Translate primitives Literals of playground examples into japanese #247
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
@@ -0,0 +1,65 @@ | ||||||
// TypeScriptには、ソースコードにリテラルを用いた | ||||||
// とても面白い利用例があります。 | ||||||
|
||||||
// これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。 | ||||||
// ( example:type-widening-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); | ||||||
|
||||||
// しかし、このルールは混み入ったオブジェクトには適用されません。 | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 原文的には「一見すると、このルールは複雑なオブジェクトには適用されないように見えます」みたいなas constを付けない挙動を導入として解説してから、後段で適用したかったらas const付けるとできるみたいなことを言いたいように見えるんですが、そこまで訳すか難しいところですね 👀 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. この線引きが結構難しいですよね。直訳すると「複雑」「混み入った」となるのですが、オブジェクトであれば何だってこうなりますし。。「一見すると」も何だか変なのでとったのですが悩みどころです。 |
||||||
|
||||||
const myUser = { | ||||||
name: "Sabrina" | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IMO: Hello WorldがHello, 世界になってるPRが会った気がする
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. うーん、花子じゃだめなのか、みないな話になりそうなので。。この辺どうしましょう There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. たしかに、Gender Neutralな名前でないと厳しいかもですね‥ There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 良さそう |
||||||
}; | ||||||
|
||||||
// 定数として定義された `name:"Sabrina"` であっても | ||||||
// `name:string` に変換されてしまいます。 | ||||||
// こうなるのは、nameプロパティがいつでも変更できるからです。 | ||||||
|
||||||
myUser.name = "Cynthia"; | ||||||
|
||||||
// なぜならmyUserのnameプロパティは変更できるため、 | ||||||
// TypeScriptは型システムにおいてリテラル型を使用できません。 | ||||||
// しかしながら、次の機能でこれを許容することができます。 | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. IMO:
Suggested change
to do thisのthisを開いたのはちょっとやり過ぎかもしれないです There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. そうですね、これは書かれていない事なのでこのままとしたいです。 |
||||||
|
||||||
const myUnchangingUser = { | ||||||
name: "Fatma" | ||||||
} as const; | ||||||
|
||||||
// 「as const」をオブジェクトに適用すると、 | ||||||
// 変更できるオブジェクトの代わりに、 | ||||||
// 変更できないオブジェクトになります。 | ||||||
|
||||||
myUnchangingUser.name = "Raîssa"; | ||||||
|
||||||
// 「as const」はコード中でインラインリテラルを扱ったり、 | ||||||
// 固定データを扱うための素晴らしいツールです。 | ||||||
// 「as const」は配列でも動作します。 | ||||||
|
||||||
const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IMO
ちょっと型が多くてうるさいかもしれない。ただ、型システムの話してるので、文字列型と明示的にした方がいいかなと思いました
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
これも悩みどころですね。いずれも「literal type」「string type」とは原文に書かれていないため。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
基本的に、訳者の意見を尊重でいいと思います 👍