Skip to content
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

Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// TypeScriptには、ソースコードにリテラルを用いた
// 特別な面白いケースがあります。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO:

Suggested change
// 特別な面白いケースがあります
// とても面白い用法があります

用法だと薬っぽいかもしれない

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とても面白い利用例があります。 としています


// これは、型の拡張・型の絞り込みにおいて、多くのサポートをもたらします。
// (例:type-widening-narrowing)
Copy link
Contributor

@orta orta Feb 13, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You probably want to keep this as example:type-widening-narrowing because it becomes clickable inside the playground to take you to that example

// そして、はじめにそれを網羅する価値があります。

// リテラルは集合型よりも具体的なサブタイプです。
// どういうことかと言うと、型システム内部では
// 「Hello World」は文字列ですが、文字列は「Hello World」ではありません。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO

// リテラル型は集合型よりも具体的なサブタイプです。
// どういうことかと言うと、型システム内部では
// 「Hello World」型は文字列型ですが、文字列型は「Hello World」型ではありません。

ちょっと型が多くてうるさいかもしれない。ただ、型システムの話してるので、文字列型と明示的にした方がいいかなと思いました

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

これも悩みどころですね。いずれも「literal type」「string type」とは原文に書かれていないため。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

基本的に、訳者の意見を尊重でいいと思います 👍


const helloWorld = "Hello World";
let hiWorld = "Hi World"; // これはletなのでstring型です
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

文字列型かstring型か統一しないとですね。。。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

文字列型に統一しています


// この関数は、すべての文字列を受け入れます
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);

// しかし、このルールは混み入ったオブジェクトには適用されません。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

原文的には「一見すると、このルールは複雑なオブジェクトには適用されないように見えます」みたいなas constを付けない挙動を導入として解説してから、後段で適用したかったらas const付けるとできるみたいなことを言いたいように見えるんですが、そこまで訳すか難しいところですね 👀
私は訳したくなってしまう派ですが。。。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この線引きが結構難しいですよね。直訳すると「複雑」「混み入った」となるのですが、オブジェクトであれば何だってこうなりますし。。「一見すると」も何だか変なのでとったのですが悩みどころです。


const myUser = {
name: "Sabrina"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO: Hello WorldがHello, 世界になってるPRが会った気がする

Suggested change
name: "Sabrina"
name: "太郎"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

うーん、花子じゃだめなのか、みないな話になりそうなので。。この辺どうしましょう

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

たしかに、Gender Neutralな名前でないと厳しいかもですね‥
日本語で Gender Neutral な名前ってなんだろ。
原文は大体女性の名前っぽいですが、下手に悩むよりは原文のままでも良さそうと感じます。

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

良さそう

};

// 定数として定義された `name:"Sabrina"` であっても
// `name:string` に変換されてしまう様子を見てください。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO

Suggested change
// `name:string` に変換されてしまう様子を見てください
// `name:string` に変換されてしまいます

// この理由は、名前はいつでも変更できるからです。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO

Suggested change
// この理由は、名前はいつでも変更できるからです
// こうなるのは、nameプロパティがいつでも変更できるからです

これ、名前ってなってますが、多分 name propertyのことっぽいですね。。。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

直訳だと名前ですが、nameプロパティの方が親切だと思うので変更します


myUser.name = "Cynthia";

// なぜならmyUserのnameプロパティは変更できるため、
// TypeScriptは型システムにおいてリテラルバージョンを使用できません。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
// TypeScriptは型システムにおいてリテラルバージョンを使用できません
// TypeScriptは型システムにおいてリテラル型を使用できません

// しかしながら、次の機能でこれを許容することができます。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO:
「there is ~」で〜が存在する
「allow 人称代名詞 to do」で人称代名詞がto do できるようにする
みたいな訳になる気がします

Suggested change
// しかしながら、次の機能でこれを許容することができます
// しかしながら、nameプロパティをリテラル型として扱えるようにする機能があります

to do thisのthisを開いたのはちょっとやり過ぎかもしれないです

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

そうですね、これは書かれていない事なのでこのままとしたいです。


const myUnchangingUser = {
name: "Fatma"
} as const;

// 「as const」がオブジェクトに適用されると、
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO: 日本語、受動態をそのままにするとすごく直訳感が出てしまう傾向がある気がする

Suggested change
// 「as const」がオブジェクトに適用されると
// 「as const」をオブジェクトに適用すると

// 変更できるオブジェクトの代わりに、
// 変更できないオブジェクトになります。

myUnchangingUser.name = "Raîssa";

// 「as const」は固定データのための素晴らしいツールであり、
// コード中であっても、インラインリテラルとして処理されます。
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO: 自信ないんですが、great tool forがfixtured dataとplacesに対して並列で係ってると思います

「as const」は固定データやコードを
そのままの型として扱う場所のための素晴らしいツールなのです。

うーん、そのままの型が直訳っぽくて微妙。。。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

// 「as const」はコード中でインラインリテラルを扱ったり、
// 固定データを扱うための素晴らしいツールです。

としています

// 「as const」は配列でも動作します。

const exampleUsers = [{ name: "Brian" }, { name: "Fahrooq" }] as const;