TypeScript part2 [転載禁止]©2ch.net
レス数が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/ 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でもいいしココでもいいよ!! safariが次のIEと呼ばれているように、
Typescriptは次のcoffeescriptと言われているwww このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1092日 3時間 14分 38秒 レス数が1000を超えています。これ以上書き込みはできません。