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

型アサーションのアングルブラケット構文とジェネリクスの見分け方を追記してほしい #791

Open
mendelssohnbach opened this issue Nov 8, 2023 · 2 comments
Labels
stage1:話し合い中 結論を出すために話し合いをしている最中です。まだ着手・プルリクエストの作成はしないでください。

Comments

@mendelssohnbach
Copy link

有用な文書の公開ありがとうございます。

初心者の私には、ジェネリクスとの見分けることも困難です。
見分けるための方法を追記いただければ幸いです。

https://typescriptbook.jp/reference/values-types-variables/type-assertion-as#%E5%9E%8B%E3%82%A2%E3%82%B5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E6%9B%B8%E3%81%8D%E6%96%B9
アングルブラケット構文

アングルブラケット構文はJSXと見分けがつかないことがあるため

const strLength: number = (<string>value).length;

初心者の私には、ジェネリクスとの見分けることも困難です。

ジェネリクスが解決する問題より引用
https://typescriptbook.jp/reference/generics#%E3%82%B8%E3%82%A7%E3%83%8D%E3%83%AA%E3%82%AF%E3%82%B9%E3%81%8C%E8%A7%A3%E6%B1%BA%E3%81%99%E3%82%8B%E5%95%8F%E9%A1%8C

chooseRandomly<String>("勝ち", "負け");
chooseRandomly<Number>(1, 2);
chooseRandomly<URL>(urlA, urlB);

関連ページ: https://github.com/yytypescript/book/edit/master/docs/reference/values-types-variables/type-assertion-as.md

@suin suin changed the title 質問です: 型アサーションの見分け方につじて 型アサーションのアングルブラケット構文とジェネリクスの見分け方を追記してほしい Nov 10, 2023
@suin suin added the stage1:話し合い中 結論を出すために話し合いをしている最中です。まだ着手・プルリクエストの作成はしないでください。 label Nov 10, 2023
@suin
Copy link
Contributor

suin commented Nov 10, 2023

まずは、どのような説明をしたら、型アサーションとジェネリクスを見分けられるようになるか、という観点でのアイディア出しが必要そうです。

@mendelssohnbach
Copy link
Author

検討事項に採用いただきありがとうございます。

初心者なりの視点
ジェネリクス: 関数の後に後置されている
型アサーション: メソッドの前に前置されている

関数やメソッドの定義が頭のなかで「ふわっと」したものです。
正しい定義であるか自信がありません。
また、上記の理解で例外があるのかも知りたいところです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
stage1:話し合い中 結論を出すために話し合いをしている最中です。まだ着手・プルリクエストの作成はしないでください。
Projects
None yet
Development

No branches or pull requests

2 participants