TypeScript part2 [転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
http://www.typescriptlang.org/
TypeScript lets you write JavaScript the way you really want to.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.
前スレ
http://peace.2ch.net/test/read.cgi/tech/1349187527/ それか
class CurrentComponet<T> extends React.Component<T&Props> {
}
でもいいな
こっちが使う側からすると楽かも
>>894
説明面倒だからggrks >>895
単純にReact.d.tsと見比べてみると良い。結局使う時に<Props>を使えるようにCurrentComponet<T> としておくのが目的
ジェネリクス型に追加情報を与えるための概念と考えると分かりやすい。
<T>をTopに残しておいてそこを解決すると React.Component<T>も自動的に追従する >>870
いろいろあるけどちゃんと探した?
今さら誰かに再発明してもらって↓とかに勝てるの?
https://codesandbox.io >>899
おっ。そこは知ってたけどTypeScriptのコード補完効くとしらなかったわ。ありがと 地味にawait書き忘れてちゃんと動かないというパターンが多発してるんですが
TSLintでawait入れ漏れで指摘する機能ってないですかね? >>901
c#だと書き忘れた場合はコンパイラが警告出してくれるんだけどね なお間に合わなかったバグフィクスはガンガン後回しにしてリリースする模様 >>906
アンギュラーってぶっちゃけ使ってる人いるの? Google自身が使ってないのにどうして使うというのか 2.6になったらコンパイルエラーが多発する。react-redux のconnect周りで。
なんでー MEAN勉強中なのにangulerってマイナーなの?ショック コンストラクタを複数定義できないのでしょうか??
うーん。 オーバーロードはできるけど、実装は1つとか・・
JSONへのシリアライズ・デシリアライズは自分で制御するので、
constructor(json: any)と
construcotr(parameter1: type1, parameter2: type2)
二つ用意したいんですけど。最初は
construcotr(parameter1: type1, parameter2: type2)だけ用意しえ、
staticメソッドの方に
statis parseJson(json: any): Class1として、そこでconstrucotr(parameter1: type1, parameter2: type2)を呼んでたんですけど、
これだと子に親のインスタンスの参照渡せないんですよね。 ごめんなさい。これじゃ何いってるからんし、意味不明ですね。 願望なんだけど
Typescriptは言語自体がWebアプリ開発用に
丸ごとフレームワークになったら良いと思う。
Flash(flex)のActionscript3も
フレームワーク化達成した様だし。
http://flex.apache.org/ >>920
JSのスーパーセット目指してるんだし無理に決まってんだろ >>920
TypeScriptでkoa.js使えばいいんでわ?
なんか違うの? >>923
すみませんkoa.jsの存在を知りませんでした。
良さげなので検討してみます。 人気沸騰中のはずなのに年々参加者が減っていきついにアドカレ作られすらしなくなったTypeScriptさん TypeScript関係ないけど、アドカレVue.jsすげぇな。React人気ないのか?? ES6普及したから
AltJSへの興味が薄れてるんじゃね? まだasync await周りが完成してないけどね。
とりあえずmapとかfilterが普通に使えるようになってほしい stackblitzいいな。マジでplayground系の決定版感ある。
https://stackblitz.com/edit/react-ts typeScriptのinterfaceで配列の要素数を制約する方法ってありますかね? >>932
何に使うの?
空でない配列なら分かるけど もしかして:タプル機能を知らない
let vec:[number,number=[1,1]; ミス
let vec:[number,number]=[1,1];
もちろんこれでもOK
type Vec=[number,number];
let vec:Vec=[number,number]; 前にもタプルあるのにタプル欲しい言ってたやついたような https://www.typescriptlang.org/docs/handbook/advanced-types.html
タプルもだけど、このページ読んでない人多くね?
TypeScript語るなら&、|、is、keyofくらいマスターしておけよな >>937
すっかり忘れとりました。Enumとかも使ってなかった。
>>940
ですよね。
>>933
online vscode と名乗ってる (´・ω・`) デコレータがなんの役に立つのかわからん… 一時期使ってみたが全部取っ払って今は一切使ってない
デコレータを使う設計自体が悪い
技術的負債になるワークアラウンドが不運にも市民権を得てしまったのがデコレータ
デコレータを使うのは未熟者の証 使ってないけど、デコレータはDI(dependency injection)(依存性の注入)に使うんでしょ?
そもそもそれが必要な事なのか知らんけど DIはコンストラクタ注入だけでいい
メソッドだの継承だのデコレータだの無駄に複雑なだけ interfaceを使ってるとjsonでセーブする時にすごく便利なんだけどメソッドが生やせないのが辛い。
なんとかならないかな まぁ、classレベルならいいけど、interfaceレベルだときついかもしれんが。 localStorageとかreduxとか使ってると意図せず型変換が入ってtscはDate型の想定なのに実際はstringという状況マジ勘弁してください。 >tscはDate型の想定なのに実際はstringという状況
そりゃ不適切な型付けしてしまっただけじゃね?
stringを入る可能性があるanyをDateと決め打ちしたとか。 DateがJSON serializableじゃないって話でTypeScriptの問題でもない インスタンスではなくclass を引数に取った関数を作りたいんですが、良い方法がないでしょうか?
redux.connectをラップする関数を作りたくて上記手段を求めています
サンプルコードはいかにおいています
https://goo.gl/FF5jFc >>958
すんません。自己解決
interface IBase {
new (message: string): Base;
} 返り値とか省略すると推論してくれますけど推論の結果を取得する方法ってないですかね?
vscodeでカーソルを合わせてると出るんですけどカーソル合わせている間しか出ないのでコピペしづらくて。 TypeScriptでglobal import的なものってないですかね?
ロガーを作ったんですけど、それを毎回importするのがしんどくて Conditional types関連は既にmergedなのか 小躍りしながら使ってみたところ速攻でバグにぶち当たって無事死亡
修正されるまで一回休み 型を後付した言語の限界があるよな。
ストレージに一度保存して意図せずjsonになってたり、関数のインターフェース上nullやundefind許容しない設定にしてても結局js側でnullの可能性のある値を渡されたらバグるし。
例えばjsとtsの境界部分。
モジュールとして外出ししている関数とかのインターフェースとかをきちんとnullチェックしてくれるコードを自動で埋め込んでくんないかな。 それは信頼できないjsが悪いだけだろ
外部のクソコードはどうにもならん TypeScriptが目指してるのはコンパイル時型チェックであって実行時型チェックではない
コンパイル時型チェックならパフォーマンスに影響はない(処理系によってはむしろ向上する)が実行時型チェックは明確にパフォーマンスが落ちる
PHPなんかは実行時型チェックを実装しちゃったもんだからクラスのメンバに型宣言するRFCすらリジェクトされてる >>969
ですよね。それはわかっているんですが、、、、
せめてlint的な感じでjs向けのインターフェースが null| undefinedの可能性があるから直せみたいな警告が出るといいんですけど。
async func 内の await記入漏れと一緒にほしい。 http://blog.yux3.net/entry/2017/06/08/202859
あと objectとObjectがあるって知らなかった。
hyperappの型定義で始めて見た。 jsから呼ばれる部分はどうやってもチェックしようがないと思うぞ。 yarnのワークスペースを使用して、Create React AppとCreate React Native App (Expo) で共通のコードを共有する
https://taiyaq.com/contents/gk1Kr17x8vW9LIozNo51lez9rr
を参考にしてcreate-react-app でtypescriptプロジェクトを作ったんだけど
ワークスペース内での型情報の共有がうまくいかない。
それぞれ単体では動くんだけど。既に試している人っている? ブラウザで動く個人的なちょっとしたものしか作らなくて、
ライブラリはimportしないで自分でscriptタグで読み込んでるから、
@typesの定義だけ欲しいんだけど、今って中身のないstubばかりで
importしないと使えないんだけど、これってどうすればいいのでしょうか?
仕方なくファイルをルートにコピーして、意味がわからないまま
export as namespace hogehoge; みたいな文をくっつけたりして
何とか機能するようにしてるけど、非常に困ってます いろいろやってみたけど、なかなか上手くいかない。
tsc --listFilesってやると、定義自体は読み込めてるようなんだけど、
要するに、d.tsファイルがIsomorphic modules (UMD global)ってやつに対応した書き方になってなくて、
それに対応するためにexport as namespace hogehoge; が必要だったりするらしい
https://www.typescriptlang.org/docs/handbook/modules.html#umd-modules >>974
ちょっと言ってることがわからないからこういうときは小さいサンプルでも作ってどっかにあげてみてくんない?
そしてそうやって小さくまとめてみると意外と自己解決したりするもんだ。 例えばmomentを使う場合、scriptタグでmoment.jsを読み込んでいれば、
自分のjsではconsole.log(moment().format("YYYYMMDD hh:mm:ss"))みたいに使えます。
そのjsをtypescriptで書こうとした場合、moment()の定義が必要になります。
そこで@types/momentをインストールするわけですが、@typesはオワコンらしく、
実際にはmoment自体のパッケージもインストールされて、その中の定義ファイルが
参照されるようになります。
しかし、自分が使おうとしているmoment()は、トップレベルのwindow.moment()なわけですが、
定義ファイルでは、そのことが考慮されていないために定義を見つけられないようです。
(エラーは出ますが、anyとしてコンパイルはされます。)
その定義を見つけらるようにするおまじないが、export as namespace moment;のようです。
結局は、モジュールシステムに合わせた定義ファイルの書き方を
理解している人が少ないのだと思います。
export hogehoge とか export default hogehoge とか export = hogehogeとか
わけわかりません。 >>978
@typesは別にオワコンじゃない。
型定義を提供するのに2つのルートがあるってだけ。
momentは作者側で型定義を提供してくれてるってだけ。
ところで解決したってことでいいんだよね?
/// <reference path="./mytypes/moment.d.ts"/>
みたいな感じでカスタムしたd.tsを読めばいいだけだし。 つーかUMD対応中みたいだね
https://github.com/moment/moment/pull/3688
ワークアラウンドとして
import * as _moment from 'moment';
export as namespace moment;
export = _moment;
というd.tsを作ってimportすればいい import使っちゃった意味ないんだけどね
vueみたいに複数のファイルに分けられちゃうと大幅に変えないといけないから
気軽にプルリクできない感じがする
だが自分でその場しのぎの対応してると、バージョン上げられた時に詰む 勘違いしてた
import _moment from 'moment';
export as namespace moment;
export = _moment;
とか、
import _Vue from 'Vue';
export as namespace Vue;
export = _Vue;
みたいに書けばいいのか。
すごい。解決した TSConf 2018
https://tsconf.io/
初のカンファか >>983
次スレのテンプレに入れたほうがいいものとかある? tsconfigのexcludeの項目を、compilerOptionsの中に書いてて、何でダメなんだろう悩んじゃった
設定はcompilerOptionsの中に書くものと思い込んでて、全然気付けなかった >>986
リポジトリとかWikiとかWhat'sNewあたり?
あとは流れで 俺のtypescriptが好きすぎる感情をどこにぶつけていいかわからない >>990
俺も俺も!。qiitaでもいいしココでもいいよ!! レス数が950を超えています。1000を超えると書き込みができなくなります。