TypeScript part2at TECH
TypeScript part2 - 暇つぶし2ch750:デフォルトの名無しさん
17/06/14 08:28:34.92 TtxDPC/b.net
enumってstring literal型出てからほぼ使わなくなったからなあ
コード内でimportできるのもよくわからん
何がよくなったんだ

751:デフォルトの名無しさん
17/06/14 09:04:40.52 t483F9YG.net
新importは関数であることに意味がある

752:デフォルトの名無しさん
17/06/14 21:28:45.57 YgZhsY+k.net
>>721
なるほど Promiseで返すってことはasync await 前提なんかな。
ちょっと非同期周りで互換性のないライブラリ使ってると途端に不便になるから
一長一短ではあるんだけど。全部がPromise使うライブラリで固められれば便利になるんかな。

753:デフォルトの名無しさん
17/06/14 21:29:54.91 YgZhsY+k.net
jsの仕様変更そろそろ収まって欲しい。
import周りってこれで安定するようになるのかな。

754:デフォルトの名無しさん
17/06/15 19:20:45.69 Zba3QY3O.net
filterの中でasync await って使えないんですかね?

755:デフォルトの名無しさん
17/06/15 19:24:11.68 xqojsLNP.net
>>724
無理
rxjs使うか設計見なおせ
具体的に何をしたい?

756:デフォルトの名無しさん
17/06/15 21:25:19.64 Zba3QY3O.net
filterの評価関数を作ろうとした時に、今まで作ったやつが全部プロミス返す設計になっていたので、
シームレスに使おうとしたらasync-awaitを使えないかなーと。
将来的にここもasync await使えるようになるのかな。
結局ループを回して絞込処理を実装しましたわ。

757:デフォルトの名無しさん
17/06/15 21:30:12.69 xqojsLNP.net
rxjs使え

758:デフォルトの名無しさん
17/06/15 21:32:03.12 xqojsLNP.net
それか自作。そんなに難しくないぞ

759:デフォルトの名無しさん
17/06/16 01:22:09.50 uNQVqIhb


760:.net



761:デフォルトの名無しさん
17/06/16 07:51:13.34 VSZ6CfqO.net
ループでawaitしちゃうってパフォーマンス悪くない?
await promise.all([].map(async () => {}))

こういうのが普通では?

762:デフォルトの名無しさん
17/06/16 12:37:39.06 uNQVqIhb.net
>>730
ずっとpromise.allの存在を失念してた。
これでmap的な使い方できるね。


ところでtypescriptのプロジェクトで自作helperライブラリを使う時にいちいちimportを使うのが面倒くさいんで
自動でimportする設定ってtsconfigにないかな?

763:デフォルトの名無しさん
17/06/17 10:56:23.79 254ieyWi.net
typescript便利だけどやっぱり型が後付の弊害がなかなかしんどい。
nullを許


764:容しない前提かと思って使っても結局 実体はnullが突っ込んであったり する。



765:デフォルトの名無しさん
17/06/17 17:32:41.06 Jhwo6DZg.net
弊害じゃなくて人為的ミス
誤りに気付いた者が正せばいい

766:デフォルトの名無しさん
17/06/17 22:27:47.68 254ieyWi.net
swaggerのジェネレーターが出すコードなんだよね。プルリク出すのが面倒です

767:デフォルトの名無しさん
17/06/18 00:50:13.20 GScuub4f.net
サーバーサイドの言語仕様とswaggerがstrict null checkに対応してないだけであって
typescriptは何も悪くないのでは

768:デフォルトの名無しさん
17/06/18 15:17:38.51 xPH4G83l.net
ほんそれ

769:デフォルトの名無しさん
17/06/18 20:34:02.75 9Ms8Oqe4.net
>>735
本体がstrict null check対応しても
モジュール側が対応してないとそこは無視するってことです?
例えばモジュールが強制的に T | undefined | null 型になるとかならいいんですけどね

770:デフォルトの名無しさん
17/06/19 00:15:28.42 2IBzsU2g.net
type Action =
{
type: “A”,
id: number
} |
{
type: “B”,
payload: any
} ….
みたいな定義がある時に
interface ALias {
[type: Action.type]: () => any;
}
export default <Alias> {
“A”: func1,
“B”: func2,
}
みたいに書けないですかね?
つまりAction.typeをinterface の条件に入れたいってことなんですが。

771:デフォルトの名無しさん
17/06/19 09:56:19.65 nrLP7Uu1.net
インデックスシグネチャがstringかnumberしか受け入れない現状では
Aliasを定義する時点でキー(Action.typeの値)が
分かってるなら interface Alias { 'A'?: Func; 'B'?: Func; }
分からないなら interface Alias { [type: string]: Func; }

772:デフォルトの名無しさん
17/06/19 20:30:47.90 8qDOjcU2.net
>>731
interface Actions {
A: {id: number};
B: {payload: any}
}


interface Arias {[key in keyof Actions]: () => Actions[key]}

こういうことかな?

773:デフォルトの名無しさん
17/06/19 21:29:43.40 GKod7M3S.net
携帯から書いたけどエラー起きてるし意図理解できてなかった。
こういうことかな?
type Action = { type: "A" } | {type: "B"};
type Arias = {[K in Action["type"]]: () => void}
URLリンク(i.imgur.com)

774:デフォルトの名無しさん
17/06/19 22:19:36.13 p+TikfUB.net
Arias(笑)

775:デフォルトの名無しさん
17/06/20 16:14:46.75 Nl8VP77v.net
>>741
おー。聞いてみて良かったです。半分諦めてたんで。
上手く動きました。ありがとうございます。

776:デフォルトの名無しさん
17/06/21 12:13:37.61 qahQSwg3.net
>>743
もっとこういう質問で賑わってほしい
書いてて気持ちいい言語だから
angularやreactは流行らなくていいけどフロント開発の標準はtypescriptになってほしい

777:デフォルトの名無しさん
17/06/21 14:47:30.10 CAzvCkNY.net
>>744
定義ファイルがなくて自作するハメになると途端に苦痛になるけどな。
あとReactというかReduxつかってて合わせてimmutable.js使ってると
いつの間にかclassがjsonに変わってることがあってその場合はtypescriptの型と合わなくなるから
しんどい。型が後付じゃない言語ならこういうことがないから、ちょっと辛い。
結局reducer内で使う時にjsonからimmuatblejsのclassに変換して
state返す時にjsonに戻す処理を毎回入れる方針になった。
immutable.jsは全然typescriptと相性が良くない。
XXX.set(‘member’, value) みたいな構文になるから。
もっとtypescriptで使いやすいimmutableなライブラリないかしら。

778:デフォルトの名無しさん
17/06/21 16:08:20.66 QjjhDd/n.net
>>745
新バージョンではXXX.setが型安全になるからもう少し待て
リテラル型とkeyofを使うらしい

779:デフォルトの名無しさん
17/06/21 19:23:40.28 CAzvCkNY.net
URLリンク(goo.gl)


780: こんな感じのコードでファイルのアップロード処理を作りたいんですが 上手く動かなくて悩んでいます。 お助け下さい



781:デフォルトの名無しさん
17/06/21 21:09:26.65 nUhsZ0ik.net
>>747
ブラウザのセキュリティ設定で、`input.click()`はfileエレメントには効かないみたいですね。
URLリンク(stackoverflow.com)

782:デフォルトの名無しさん
17/06/21 21:50:59.59 nUhsZ0ik.net
>>745
immutablejsというのは使ったことないけど、
XXX.set(‘member’, value)みたいな処理もkeyof使ってラップしてあげればkey毎に違う型のvalueに対応できる。
例えばES6のMap<K,V>クラスをラップすれば以下みたいなこともできる。
まあ新しいバージョンで対応されるならわざわざラップクラス作る必要ないがw
class TypeSafeMap...(省略

interface IObject {
name: string;
height: number;
isYes: boolean;
}

const safeMap = new TypeSafeMap<IObject>();
safeMap.get("name") // string型
safeMap.get("height") // number型
safeMap.set("name", 1) // NG
safeMap.set("name", "one") // OK

URLリンク(goo.gl)

783:デフォルトの名無しさん
17/06/21 22:49:52.97 CAzvCkNY.net
>>748
こちらは結局 イベントリスナーをcickではなくchange にすることで上手く動くようになりました。

>>749
typescriptのジェネリクスの性能いいですね。
結構知らない機能がまだありそう。

784:デフォルトの名無しさん
17/06/22 00:17:25.62 u6z6+xvR.net
>>750
それはよかったです、てっきりclickイベントをjsで発火させてファイル選択ダイアログを自動で開かせたいのか思ったw

785:デフォルトの名無しさん
17/06/22 17:18:45.24 77+4f1XL.net
>>751
そうなんですけどリスナーのイベント指定がclickではなくchnageだったってことです。
URLリンク(goo.gl)

before
i.addEventListener(‘click’, async (e) => {
after
i.addEventListener('change', async (e) => {

786:デフォルトの名無しさん
17/06/22 18:30:45.28 b2Lz7aux.net
>>752
たしかのそれもひとつの原因ですね
ですがclickイベントの発火も多分動かないのでは?chブラウザにもよると思いますがchromeで動かなかったですよ

787:デフォルトの名無しさん
17/06/22 19:47:44.81 77+4f1XL.net
>>753
動きましたよ。少なくともchromeでは。動くコードを>>752に貼ったんで

788:デフォルトの名無しさん
17/06/22 20:06:21.77 u6z6+xvR.net
>>754
>>752は手動のクリックイベントからclick発火してるので動きますね
>>747はsettimeout内でclick発火してるので、動かないです

789:デフォルトの名無しさん
17/06/24 00:04:21.44 7kzB7ca0.net
typescriptでreduxのミドルウェア書いてる人っていませんか?

export interface Middleware {
<S>(api: MiddlewareAPI<S>): (next: Dispatch<S>) => Dispatch<S>;
}

上記interfaceを満たすコードを書けなくて困ってます。サンプルコード的なのどっかにないですかね?

790:デフォルトの名無しさん
17/06/25 15:04:59.28 k1gomwYO.net
reduxってreact関係の何かなのかな?
相変わらずreactの作法は意味不明
流行らずに消えてほしい

791:デフォルトの名無しさん
17/06/25 15:18:46.73 dKXT3hQ7.net
すみません
今パッケージングというのかライブラリのシステムは何を使うのが正解何ですか?
electronやってみようと思ってタイプライブラリをいれようと思っていろいろなサイト見てやってるんですが
どれも失敗します

今の定番の方法を紹介してるサイトってありませんか?
それとも今は時期がまずいんでしょうか?

792:デフォルトの名無しさん
17/06/25 16:41:50.61 OCPIhIaN.net
npm -i @types/XXXX

793:デフォルトの名無しさん
17/06/25 17:11:28.11 k1gomwYO.net
>>758
よくわからないけどelectronのtypescript開発は少しややこしい
メインプロセス側と画面側でプロジェクト分けるのが主流で、メインプロセス側はgulpビルド、画面側はwebpackビルドみたいになって少しややこしい

794:デフォルトの名無しさん
17/06/25 19:32:19.06 o1GCb4AX.net
回答ありがとうございました

もうしばらく待ってみます

795:デフォルトの名無しさん
17/06/26 10:42:55.52 B+I0vs4D.net
>>757
はやっちゃってるんだよなぁ。
React自体は凄くTypeScriptとの親和性は高い。というかむしろ推奨しているくらい。
ただReduxはTypeScriptからどう使えばいいのかよくわからなくて

796:デフォルトの名無しさん
17/06/26 15:37:27.06 B+I0vs4D.net
>>756
自己解決したので書いておきます
ただのロガーの場合

import { Action } from 'actions';
import { State } from 'reducers';

export function myMiddleware(store: redux.MiddlewareAPI<State>):
(next: redux.Dispatch<State>) => redux.Dispatch<State> {
return (next: redux.Dispatch<State>) => (action: Action): Action => {
console.log(store.getState());
let result = next(action);
console.log(store.getState());
return result;
};
}

797:デフォルトの名無しさん
17/06/27 16:22:46.76 xkXC4vKS.net
typescriptで書かれてる有名なライブラリって何があるの?
Rx.jsはtypeScriptで書かれてたね。

798:デフォルトの名無しさん
17/06/27 16:42:32.21 mpuQzI8/.net
フレームワークだけどngx

799:デフォルトの名無しさん
17/06/27 18:35:39.52 5NUjqPYf.net
Dartどっかいったな

800:デフォルトの名無しさん
17/06/27 19:04:32.75 mpuQzI8/.net
googleが作る言語はゴミばっかだからしゃーない
言語のセンスは圧倒的にMSの方が上
MSというよりヘルスバーグが有能すぎる

801:デフォルトの名無しさん
17/06/27 22:13:14.24 xkXC4vKS.net
>>767
goはいいぞ。素朴でモダンという相反する要素を持ち合わせてる。
エコシステムはモダン。
言語仕様は素朴。

802:デフォルトの名無しさん
17/06/27 22:20:02.75 rQeMEWtY.net
J++とかJ#とかManaged C++とか割と救いようのないものも作ってるけどねMicrosoft
でも全体としては確かに良い言語が多い印象

Googleの言語もGoとか(使ったことないけど)人気みたいだし, そもそも作った言語の数が大分違う気が

803:デフォルトの名無しさん
17/06/27 23:37:36.64 mpuQzI8/.net
>>768
ジェネリクス追加されるまでは様子見…

804:デフォルトの名無しさん
17/06/28 03:33:15.38 4SuBLGV6.net
マイクロソフトはvsc出したときはなんでatomの二番煎じやってんのって思ったけどやはり製品としての完成度高くて感動する。
開発環境作らせたら最強と言う噂は伊達じゃない。

805:デフォルトの名無しさん
17/06/28 09:12:54.31 9HmGLvwZ.net
>>764
angular2

806:デフォルトの名無しさん
17/06/28 14:22:19.39 R0ZTQr0d.net
Announcing TypeScript 2.4
URLリンク(blogs.msdn.microsoft.com)

807:デフォルトの名無しさん
17/06/28 16:15:00.25 7uiFkJf0.net
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い

808:デフォルトの名無しさん
17/06/28 16:19:23.04 DxMay05+.net
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い

809:デフォルトの名無しさん
17/06/28 16:28:12.57 7uiFkJf0.net
>>775
何こいつ怖い

810:デフォルトの名無しさん
17/06/29 16:13:29.70 f9ij8X2q.net
すいません。

例えば以下のようにアクションを定義してあったとして

export type Action =
{
type: 'FETCH_MAIN_FEEDS';
} |
{
type: 'SET_MAIN_FFEDS';
payload: comm.Contentlist;
} |
{
type: 'DO_NOTHING'
};



ジェスリクスの仕組みを使って
type ActionType = 'FETCH_MAIN_FEEDS' | 'SET_MAIN_FFEDS' | 'DO_NOTHING'
をActionの内容変更に合わせて自動的に作る方法ってないですかね

811:デフォルトの名無しさん
17/06/29 16:20:59.60 f9ij8X2q.net
自己解決
export type Action =
{
type: 'FETCH_MAIN_FEEDS';
payload: undefined;
} |
{
type: 'SET_MAIN_FFEDS';
payload: comm.Contentlist;
} |
{
type: 'DO_NOTHING';
payload: undefined;
};

type ActionType = Action['type'];
type PayloadType = Action['payload'];


思いの外簡単であった

812:デフォルトの名無しさん
17/07/10 13:26:30.50 gqDySAuG.net
typescriptのエラーってよくわかんないことある

(81,32): error TS2322: Type '{ path: "/logout"; component: typeof Logout; }' is not assignable to type 'IntrinsicAttributes & IntrinsicClassAttributes<Route> & Readonly<{ children?: ReactNode; }> & Rea...'.
Type '{ path: "/logout"; component: typeof Logout; }' is not assignable to type 'Readonly<RouteProps>'.
Types of property 'component' are incompatible.
Type 'typeof Logout' is not assignable to type 'StatelessComponent<RouteComponentProps<any> | undefined> | ComponentClass<RouteComponentProps<any...'.
Type 'typeof Logout' is not assignable to type 'ComponentClass<RouteComponentProps<any> | undefined>'.

ってでて、何のことかわからない。

偶然解決して、総合するとReact.Componet<P,S>のSをvoidに指定は駄目ってことらしい。
上記エラーメッセージからどう読み取ればそういうことなわけ?

813:デフォルトの名無しさん
17/07/10 19:20:13.57 lPQJaLkK.net
template登場したての頃のc++みたいだな

814:デフォルトの名無しさん
17/07/12 20:52:57.67 iKt9vtZC.net
@typesやパッケージ自身が持っているd.tsに問題があるとき、自分のプロジェクト内で
部分的に修正版と差し替えたりできないのかな?
Typescript2.4に上げたらいくつかのパッケージがエラーを出すようになってしまったんで
大元が対応するまでの間ちょっと回避したいんだが。

815:デフォルトの名無しさん
17/07/12 21:44:01.43 46U9BX05.net
>>781
URLリンク(teratail.com)

816:デフォルトの名無しさん
17/07/12 22:50:59.04 iKt9vtZC.net
リンク先のそれは解決法として正しいのかという疑問はあるがとりあえず、declareで
定義を上書きできるということかな。試してみるわ。ありがとう。

817:デフォルトの名無しさん
17/07/13 12:11:08.28 SeGC5rTL.net
ここでredux-observale薦めてもらったのもあって試してるんだけど
epicを書く時 action$.ofType('FIRST’)って書いてfilterするのはいいんだけど返ってくる
Observaleがtype:’FIRST’に絞り込められてくれない。
無理やりキャストして使えってこと?
いい方法教えてください

818:デフォルトの名無しさん
17/07/14 00:10:59.94 UTvPeefr.net
VS2017は2015と違ってJavaScriptで
var a = {};
a.b = 1;
と書いてその下に「a.」と入力しても候補にnumber型プロパティとしてのbはない
TypeScriptのnamespaceがブラウザの生JavaScriptでも使えるようになったら便利そうなんだけどな

819:デフォルトの名無しさん
17/07/14 15:42:06.74 AYnLv9ir.net
>>783
いやいや。具体的に指摘してほしいな。
reduxのactionは基本的にobjectであれば何でもあり。というスタンスのもの�


820:ナ そのactionに継承関係を設定してるのはたまたま定義ファイルの作者がなんとなく決めた程度のものでしかない。 となると元々の定義を修正してしまっても不都合はないと思うんだが。 更にいうとreduxのmiddlewareの定義ファイルも、結構declareで大元のreudxの定義を改変してる。 (redux-thunkとかredux-promiseとか)



821:デフォルトの名無しさん
17/07/14 22:07:24.48 Ukk3qL4L.net
「具体的に」と言っている当人が具体的にに何を指摘しているのかわからない件

822:デフォルトの名無しさん
17/07/17 02:22:25.78 HJdOjxBV.net
モジュール拡張書いてる人っていますか?
ローカルではうまく書けるんだけど、
npmで管理して外部モジュール化しようとするとうまく動かなく�


823:ネる。 jsとd.tsに別れるとだめなんだろうか、、、、。 なんか参考になるnpmライブラリが有るなら事に教えてくださいm(_ _)m



824:デフォルトの名無しさん
17/07/17 09:24:35.44 3rVoB3WX.net
>>788
jsとd.tsを同じ所に置けばおk
angularとか参考になるよ

825:デフォルトの名無しさん
17/07/17 12:07:57.24 HJdOjxBV.net
>>789
ありがとうざいます。js とd.tsは同じ場所においてます、、、、
ちょっとangularはわからなかったのですが
rxjs5はoperatorをモジュール拡張の仕組みを使っているので参考になりました。
それを元に書いてるんですが、、、
どうしてもうまくいかないです。

826:デフォルトの名無しさん
17/07/17 12:30:35.11 3rVoB3WX.net
>>790
npm rxjsした時のフォルダ構成とビルド結果が同じようにすればおk
もちろんパッケージ.jspnとかもな

827:デフォルトの名無しさん
17/07/20 13:43:30.16 9ngnJ+y5.net
typescriptってユーザー数多そうなのに
どこに生息してるん?
teratailもあんまりいなさそうだし。slackとかかね?
おせーてください

828:デフォルトの名無しさん
17/07/20 15:04:36.06 heFqzBlt.net
typescript は google 社員御用達だぞ
ここのレスも 99 割が google 社員のもの

829:デフォルトの名無しさん
17/07/20 15:14:04.11 9ngnJ+y5.net
MSとgoogleのマリアージュとか最高じゃないかな。

830:デフォルトの名無しさん
17/07/20 17:31:24.01.net
>>792
TypeScriptはほぼJSだから他の言語と違って特に質問するような事ないし…

831:デフォルトの名無しさん
17/07/20 20:56:24.88.net
>>795
定義ファイル周りとか結構悩むことない?
例えばreduxとかそのまま使うとTypeScriptの補完機能を活かしきれなくて
typescript-fsaとかを使って補強してやると凄く調子良く動く。

832:デフォルトの名無しさん
17/07/28 10:18:51.65 O7VztC89.net
URLリンク(jp.vuejs.org)
vuejsもtypescriptとの親和性上がってるのかな。
昔はいまいちだったんだけど

833:デフォルトの名無しさん
17/07/28 21:08:46.09 O7VztC89.net
typescriptでjest使ってる人っています?
行番号がめちゃくちゃになっちゃうんですが、どうすればいいんですかね?
inlinesoucrmap: trueにセットしても改善せず。
行番号以外は上手く動いてるんですけどね。

834:デフォルトの名無しさん
17/07/30 23:55:24.33 W7NHR4pI.net
es2015とかes2017はどうかな?
async await使えるの幸せ。

835:デフォルトの名無しさん
17/08/03 14:06:03.33 GUb8aQei.net
さすが俺達のTypeScript

TypeScripts Type System is Turing Complete
URLリンク(github.com)

836:デフォルトの名無しさん
17/08/03 19:19:00.00 WxFDmNeE.net
>>800
ジェネリグスだけでプログラミングできるってこと?
わけわかめ

837:デフォルトの名無しさん
17/08/04 00:27:45.60 LmyTNXHn.net
ようやくHTML+CSSに追いついたわけだな
URLリンク(cpplover.blogspot.com)

838:デフォルトの名無しさん
17/08/12 11:10:59.59 3DdLvbHE.net
tsconfig.json で noImplicitAny をtrueにしてみたら、npmからのモジュールをimportしている部分で
こういうエラーが大量に出るようになってしまった。
error TS7016: Could not find a declaration file for module 'モジュール名'.
importをrequireに戻したら逆に不便だし、自分で .d.ts を用意するには数が多すぎて追いつかない。
noImplicitAny の対象を自分のコードのみに限定する(node_modules以下を対象外とする)
なんてことはできないんだろうか。

839:デフォルトの名無しさん
17/08/12 11:34:41.06 DE4QKP9/.net
>>803
俺は普通に使えてるけどな。tsconfig全体を貼ってみたら?

840:デフォルトの名無しさん
17/08/12 11:38:02.30 DE4QKP9/.net
あと使ってるライブラリも。ライブラリによって違うのかな?
俺はreduxとかreactとかm


841:oment.jsとかimmutable.jsとか色々入れてるけど 特にそういう不具合が起きたことはないな。 多分デフォルトでtsconfigの中身はnode_modules対象外な気がする。 一応聞くけどwebpack使ってないよね?



842:デフォルトの名無しさん
17/08/12 11:51:37.20 3DdLvbHE.net
このへんのモジュールが引っ掛かった。全部じゃないけど。
react-spin
cookie-parser
uuid-parse
>一応聞くけどwebpack使ってないよね?
そう、webpack使ってる。
module: {
rules: [
{
exclude: /(node_modules)/,
test: /\.[jt]s$/,
use: [ { loader: 'ts-loader', options: { configFileName: "tsconfig.json", } } ]
}
]
},
tsconfig.json はこんな感じ。
{
"compilerOptions": {
"module": "commonjs",
"target": "es6", "allowJs": true, "strictNullChecks": false,
"noImplicitAny": false, "noImplicitThis": true, "noImplicitReturns": true, "sourceMap": true
},
"exclude": [ "node_modules" ]
}
excludeの設定を間違えているのかな?

843:デフォルトの名無しさん
17/08/12 15:39:16.07 DE4QKP9/.net
なんだ、全部のd.tsが見つからないって言ってるわけじゃないなら、node_modules関係なくない?
足りないd.tsファイルは自作するしかないでしょ。インストールしたのに見つからないなら問題だけど

844:デフォルトの名無しさん
17/08/12 15:56:35.18 DE4QKP9/.net
webpackのresolveが抜けてるんじゃない?
resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
modules: [
"node_modules/"
]
},

845:デフォルトの名無しさん
17/08/12 16:09:16.06 DE4QKP9/.net
>react-spin
あとreact-spinは型定義にないみたいね。でもこれくらいなら五分で自作できるから大丈夫。

846:デフォルトの名無しさん
17/08/12 18:30:45.13 3DdLvbHE.net
>>807
noImplicitAny = false なら .d.ts が無くても使えていたんで何か方法はないかと思ったけど、
無いならしょうがないね。ありがとう。

847:デフォルトの名無しさん
17/08/12 19:23:03.92 DE4QKP9/.net
>>810
いやいや。簡単だから諦めないでよ。特にreact-componentなら簡単に自作できる
URLリンク(github.com)
これとか参考になると思う

848:デフォルトの名無しさん
17/08/12 19:49:53.59 3DdLvbHE.net
最初に書いたとおり、単に数が多いからやってられんてだけ。

849:デフォルトの名無しさん
17/08/12 19:58:06.64 DE4QKP9/.net
>>812
あーなるほど失礼
もともとjs案件だったってこと?

850:デフォルトの名無しさん
17/08/13 21:25:13.43 LJmg41iW.net
(new Error()).stack みたく 実行箇所のtsファイル名と行番号を取得する方法ってないですかね。
プリプロセッサみたくコンパイルする過程でファイル名と行番号に変換するような定数があればいいんですけど

851:デフォルトの名無しさん
17/08/15 09:46:45.08 yLrj+bDi.net
o : any が"x"というメンバーを持っているか調べるのは if ("x" in o) でできるけど、
o.x の型がstringかどうか調べようと if (typeof o["x"] === "string") とやるとESlintの
no-string-literalに引っかかってしまう。
このルールを無効にする以外にメンバーの型をチェックする方法ってないですかね?

852:デフォルトの名無しさん
17/08/15 14:18:14.33 tN8D0FqC.net
>>815
無理 any型を使ってる時点でtsにできることは無い

853:デフォルトの名無しさん
17/08/15 14:30:58.84 Yyv6Foyi.net
>>815
一旦変数に入れてからアクセスすればいいんじゃない
const x = "x";
if (typeof o[x] === "string") { ...

854:デフォルトの名無しさん
17/08/15 15:31:46.37 yLrj+bDi.net
>>817
なるほど、そんな方法が。うまくいったみたい。ありがとう。
使う直前で変数に入れるならdisableにするのとさほど変わらないけど、メンバー名はどこかで
一元管理しておけってことかな。

855:デフォルトの名無しさん
17/08/15 17:11:17.08 tN8D0FqC.net
>>818
単に変数oにinterface定義してあげればいい�


856:セけでは。 そもそもtslintじゃなくてeslint使っているという状況もよくわからない



857:デフォルトの名無しさん
17/08/15 17:54:36.31 yLrj+bDi.net
あぁ、eslintって書いたのはtslintの間違い。
>単に変数oにinterface定義してあげればいいだけでは。
ネットワークやファイル経由のjsonとか、型情報が落とされたオブジェクトからの復元なんで。

858:デフォルトの名無しさん
17/08/15 23:34:39.69 Yyv6Foyi.net
>>819
いや静的型チェックと実行時型チェックをごっちゃにしちゃダメでしょ
TypeScriptは静的型チェックを提供するものなんだから実行時型チェックにinterfaceなんて持ち出す道理がない

859:デフォルトの名無しさん
17/08/17 11:02:47.05 wX4L2Jep.net
>>821
そうだったね。ごめん

860:デフォルトの名無しさん
17/08/22 22:13:44.37 /ptFhj0b.net
TSの環境の開発の旗振りって誰?
いつになったら開発環境が安定するの?
webの情報のほとんどが古くて使えない

861:デフォルトの名無しさん
17/08/22 22:37:14.07 1PU0SC+v.net
まずVSCodeをインストール
npmでts2.xをインストール
型定義は@types/xxxxxxx

862:デフォルトの名無しさん
17/08/23 13:19:39.56 12Hdps1J.net
msで作ってるから、まずはmsの開発環境試してみればいいんだろうけど、
大元の実装が不安定だったりするの?
URLリンク(github.com)

863:デフォルトの名無しさん
17/08/23 13:23:34.59 YtvD4LeH.net
TypeScriptの実装じゃなくて環境の方だろ?
型定義ファイルもTypingsとか@typesとかいろいろ変遷してきたし

864:デフォルトの名無しさん
17/08/23 19:59:00.18 KTb6BBkr.net
TypeScript1.0が出たころ何冊も本が書かれたけど、その後どんどん進化するから誰も手を出さなくなったな。

865:デフォルトの名無しさん
17/08/23 20:36:30.14 CbozNT9/.net
進化に関係なく使う人が居て需要があれば本は出される
出されないってことは・・そういうことだ

866:デフォルトの名無しさん
17/08/25 02:06:21.27 +9ilYHDI.net
ジェネリクスで教えてほしいことがあるんですが
型がundefinedかそうでないかで処理分岐をしたいんですがどうすればいいでしょうか
URLリンク(goo.gl)
上記のようなコードはジェネリクスだとPはコンパイル時に解決されるものだからダメですよね。
じゃあどうすればいいんでしょうか。
もちろん引数にpayload:P みたいなのがあればtypeGaurdが使えるんですけど、それがない場合は?

867:デフォルトの名無しさん
17/08/25 07:45:31.16 HjHZR7Zb.net
試してないけど、Pのローカル変数を置いてみるのは?
初期化できないとダメかな。

868:デフォルトの名無しさん
17/08/25 09:42:23.66 WV+v2bcZ.net
コンパイル時に型自体の比較が出来ればいいんだけどねぇ

869:デフォルトの名無しさん
17/08/25 12:42:23.60 ai11peC4.net
型がundefinedって言うのは違うのでは?
変数がundefinedならわかるけど考え方の次元が違う気がする
Add<undefined>(item);ってありえないだろ

870:デフォルトの名無しさん
17/08/25 18:31:01.83 uvmzLTaY.net
undefinedの型はundefinedだよ

871:デフォルトの名無しさん
17/08/25 21:39:57.29 +9ilYHDI.net
>>832
undefined型、null型あります

872:デフォルトの名無しさん
17/08/26 04:59:29.39 FZcG7krL.net
undefined null void never 使い分け出来てる?

873:デフォルトの名無しさん
17/08/27 13:34:52.17 0P4eY3kj.net
>>830
だめでしたわ。やはり最終的に生成されるjsコードが型がないからなにもないところに型を定義するのは無理っぽい
ジェネリクスって使う側には幸せだけどライブラリを作ろうって思うとなかなか難しいす。
実は以下のコードが小さくて見やすいので改造できないか試しているんです。
URLリンク(github.com)
store.dispatch(someAction()) というように同期型のアクションを作るときはパラメータ引数無しで使えるんだけど
非同期アクションを使おうとした場合はパラメータ引数なしの表現ができないんですよ。
store.dispatch(someAsyncAction.started


874:(undefined)) と書かなきゃけない。 ここのundefinedを省略する方法を探っていたんですよね。



875:デフォルトの名無しさん
17/08/27 13:49:39.35 0iS30aa2.net
そもそも何がしたいのかわからないんだけど
引数追加したいけないのか?

876:デフォルトの名無しさん
17/08/27 13:55:46.03 0iS30aa2.net
レス見てなかった
ごめんごめん

877:デフォルトの名無しさん
17/08/27 14:17:00.38 iBnNI7N6.net
引数にPが含まれていない以上呼び出し時の型パラメータはハードコーディングしなきゃならんわけで、
それならOnlyH用の関数と分けてしまっても大して変わらんだろう。処理自体は共通化すればいいし。

878:デフォルトの名無しさん
17/08/27 14:23:58.62 0iS30aa2.net
ところで本当にこれジェネリックの問題?

879:デフォルトの名無しさん
17/08/27 14:27:48.95 wLayuApT.net
C++でならテンプレートの特殊化で書けるし書きたい気持ちはよく分かる

880:デフォルトの名無しさん
17/08/27 17:42:23.47 0P4eY3kj.net
>>839
もちろんそれならできることは確認してますが、それだったら引数にundefined
許容したほうがいいかなーと。
ジェネリクスは知らないことが色々ありそうなんでもしかしたら解決方法があればと想ったんですが、、、、
typescriptの進化を待ちます、、、。
>>841
c++だとできるんですか。
どう書くのか知りたいです

881:デフォルトの名無しさん
17/08/27 21:19:13.07 wLayuApT.net
>>842
何というかC++のテンプレートは強力過ぎる
Boost::Spiritみたいにコンパイル時に構文解析器を生成するような変態的なことさえ可能
ただしコンパイル時間は死ぬ
URLリンク(ideone.com)
C++っぽくないコードだけどとりあえず

882:デフォルトの名無しさん
17/08/27 21:38:06.45 0P4eY3kj.net
>>843
わ、わかんないです。c++昔使ったことがあるから分かるかと思ったら全然わからなかったという。
でも、ありがとうございました。

883:デフォルトの名無しさん
17/08/28 18:40:12.12 g1F8jR1j.net
import 'reflect-metadata';
function logType(target: any, key: string) {
var t = Reflect.getMetadata('design:type', target, key);
console.log(`${key} type: ${t.name}`);
}
class Demo {
@logType
public attr1: string;
}
Visual Studio 2017 で上記のビルドは問題ないのですが
実行すると、「exports は定義されていません」と出てしまいます。
tsconfig.json で
"experimentalDecorators": true,
"emitDecoratorMetadata": true,
は指定しています。
何か足りないのでしょうか?

884:デフォルトの名無しさん
17/08/28 20:16:46.01 3Zs55+dM.net
>>845
実行環境が書いてないから正確にはわからんのだけど
chromeとかブラウザ環境のjsはモジュール管理機構が無いからwebpackとか使わないと直接は実行できない。

885:デフォルトの名無しさん
17/08/30 15:24:22.43 0nj0F5xg.net
初心者なんだけど質問いいだろうか?
JS使う必要ある→ES5以前気持ち悪い→ES6未対応多い
という流れでTypeScript勉強しようかと思ったんだけど、手元にある本が分かりやすいけど1.0対応なんだ
追加機能を順に追えば問題ないだろうと思ったんだけど、更新箇所が多岐にわたるためか結構面倒で
ある程度網羅してそうなのも1.0からは追ってなかったりして、少し悩んでる
バージョンごとの差分を丁寧にまとめてくれているサイトか、
最新に近いバージョンを網羅的に解説してるサイトを


886:、差分を意識しながら読もうかと思ってるんだけど、 慣れてる者の視点で、なんかいいサイト or 書籍があったら教えてくれないか?



887:デフォルトの名無しさん
17/08/30 15:36:04.15 KRZoTQ7y.net
公式のWhat's newがベスト
差分付き公式アナウンスの日本語訳もあったはず

888:デフォルトの名無しさん
17/08/30 17:14:44.50 0nj0F5xg.net
>>848
ありがとう
公式サイトのドキュメントは「英語でこれだけ読むのはだるい」と回避しちゃってたけど、
確かに差分把握程度なら英語苦手でもなんとかなりそうだし、どうしても分からなければそこだけ別途調べればいいかな……

889:デフォルトの名無しさん
17/08/30 17:16:57.33 0nj0F5xg.net
>>848
なんか完璧ボケたレスした、すまない
読んで公式確認して~してる間に2行目が頭から抜け落ちてた
日本語訳あるなら探してみるわ

890:デフォルトの名無しさん
17/08/30 17:22:11.52 t7ExSs7Y.net
>>847
その用途ならbabel使え
型が欲しい人が使うのがTS

891:デフォルトの名無しさん
17/08/30 19:16:11.64 2eRd6qUC.net
俺的には初心者こそTypeScriptってカンジがするけどね。
書いてる最中にエラーが出るから曖昧な知識を補填してくれる。
基本的にはES2015 + 型 だからESの仕様を勉強してればそれがTypeScriptとほぼ一致する。

892:デフォルトの名無しさん
17/08/30 23:22:37.02 0nj0F5xg.net
>>851
型がある方が楽なんで問題ありません。ありがとうございます。
普段よく使うのが C#, Ruby なんで CoffeeScript も見た目や好きなんですけど……。

893:デフォルトの名無しさん
17/08/31 10:22:17.60 J0kol7QQ.net
俺はもうTSだけのトランスパイルで落ち着いちゃったんだけどBabel通すメリットある?
Symbolない環境でもArrayLikeをfor-ofできるならBabel使うけどそうでもなさそうだし
わざわざビルドを複雑にする理由がない

894:デフォルトの名無しさん
17/08/31 18:05:56.86 c0+jc73k.net
>>853
見た目は大事だね

895:デフォルトの名無しさん
17/09/01 13:39:42.18 /s9HCfxW.net
納期ギリギリでリリースしてきたな

896:デフォルトの名無しさん
17/09/01 14:35:34.71 gwzO0YnZ.net
Announcing TypeScript 2.5
URLリンク(blogs.msdn.microsoft.com)

897:デフォルトの名無しさん
17/09/01 18:09:16.31 NFcRuct1.net
これリリースする意味あるんか?

898:デフォルトの名無しさん
17/09/01 18:55:40.04 /s9HCfxW.net
やることなくなったんならcommunityに丸投げした大量のバグ修正しろやって感じ

899:デフォルトの名無しさん
17/09/02 17:49:25.16 p+zwcdRJ.net
プロジェクトの管理者が長期休暇で居なかったからな
今回はバグ修正とリファクタリングが多い
不在の間に溜まってたissueとPRも整理途中って感じだ

900:デフォルトの名無しさん
17/09/02 17:50:58.84 pn8ujE89.net
そう聞くとなんかほっこりした

901:デフォルトの名無しさん
17/09/03 14:18:22.90 25YGmHNv.net
Angelar4どう?

902:デフォルトの名無しさん
17/09/03 16:16:24.17 uF0EtmbD.net
4はパフォーマンス改善が大きい
あとはifとか
もう9月だから5出るぞ

903:デフォルトの名無しさん
17/09/04 09:30:18.55 XPn2hQsA.net
Angular 2/4が狭量で遅すぎる理由
URLリンク(postd.cc)

904:デフォルトの名無しさん
17/09/04 15:20:15.81 YyUl+V5/.net
>>864
原文のコメント欄でかなり叩かれてるね

905:デフォルトの名無しさん
17/09/04 21:01:59.56 54ysCAWj.net
自分でTL;DRって書いてあるからそっとしておけばいいのに

906:デフォルトの名無しさん
17/09/04 23:02:59.27 WJEd6wUZ.net
>>863
もうそんな時期か
ネットで探すと2ばっかりで4少ない

907:デフォルトの名無しさん
17/09/05 08:07:39.31 JsNUX7wh.net
>>866
tldrの意味を間違えて解釈してないか?

908:デフォルトの名無しさん
17/09/06 08:52:58.29 ZKLFsM4G.net
URLリンク(eow.alc.co.jp)
TLDR
【略】
=Too long. Didn't read.
長過ぎ。読みませんでした。/長文うざい(と言う人のための要約)。
◆【場面】ネット上などで「文章が長過ぎる」と文句を言う。転じて「長文を嫌う人のための要約」という意味でも用いられる。

909:デフォルトの名無しさん
17/09/06 18:28:14.77 8/JJ3nEQ.net
○次受けが多いほど退場率が早くなる。高くなる
直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は90万払ってる) 客:短期延長していい?
5次受けの50万(客は150万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ 
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×3 = 言い値50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - エージェント×1 悪質な言い値で50万以下
エンド - ユー子 - エージェント-JIET 公表価格 90~60 - JIETに加入して公表価格で応募できる

910:デフォルトの名無しさん
17/09/19 11:15:37.37 /BmvhpgH.net
jsbinみたいなやつでautocompleteをサポートしたeditorあるやつないかな。
誰か作って

911:デフォルトの名無しさん
17/09/20 19:34:43.20 n6fd8Yhd.net
immutable.js v4まだちゃんと動かんのね。補完効くなら早く使いたい。

912:デフォルトの名無しさん
17/09/26 15:23:42.06 ghZl2iPU.net
TypeScript Deep Dive
URLリンク(basarat.gitbooks.io)
見つけた。読むと幸せになりそう

913:デフォルトの名無しさん
17/09/27 03:23:26.68 +Ye2aVjL.net
更新履歴確認できる?

914:デフォルトの名無しさん
17/10/03 18:20:58.44 W51YTaAn.net
URLリンク(blogs.msdn.microsoft.com)
Strict function types
URLリンク(github.com)
五周年!

915:デフォルトの名無しさん
17/10/03 18:39:35.95 9EEmWhET.net
まだ五年しかたってないんだ。

916:デフォルトの名無しさん
17/10/09 07


917::06:58.86 ID:9dKH0tXT.net



918:デフォルトの名無しさん
17/10/09 21:16:28.99 3eEbeVt6.net
flowはゴミだから気にしなくていいよ

919:デフォルトの名無しさん
17/10/10 03:03:10.33 kZcMF3GJ.net
今はTSとほぼ同じ構文が使えるみたいだし推論が強い分言語としてはFlowのほうが格上になったと思うよ
開発ツール等を含めた評価はどうなるか知らんが

920:デフォルトの名無しさん
17/10/10 19:56:20.72 n13p9MLl.net
>>879
対応するライブラリが圧倒的に少ないからflowはゴミだよ
TSと完全互換とかならまだ可能性あったかもね

921:デフォルトの名無しさん
17/10/12 06:43:35.33 D9zQ5ULh.net
最初は俺もゴミかと思ったけど静的解析ツールとしてってことだと
jsのプロジェクトに段階的に型をつけていくならありかなって思ったんだよね。

922:デフォルトの名無しさん
17/10/12 08:50:48.19 x7s9E0v1.net
>>881
TSだって段階的に型を付けられるっしょ。

923:デフォルトの名無しさん
17/10/14 22:19:53.51 A+SmlCyw.net
URLリンク(github.com)
typescript 2.6 ローカライズが全面的に入るっぽい

924:デフォルトの名無しさん
17/10/14 22:27:47.84 +JNXgfir.net
非英語Issueが次々と投げ込まれていくところを想像すると胸が熱くなるな
誰がこういうの決定してんだろ

925:デフォルトの名無しさん
17/10/15 13:45:26.13 29cWpLj+.net
いままで入ってなかったのが不思議

926:デフォルトの名無しさん
17/10/15 21:03:43.86 U2nzSUai.net
コマンドラインメッセージが日本語化されるの?いらんだろそれ

927:デフォルトの名無しさん
17/10/15 21:27:06.79 nlQ3NzZf.net
ローカライズありがたいけどところどころ明らかな誤訳が混じってる

928:デフォルトの名無しさん
17/10/16 08:15:42.86 eZyML9Cw.net
誤訳を見つけてくれてありがとう
お前のプルリクを待ってるぜ!

929:デフォルトの名無しさん
17/10/16 11:31:48.47 ZoMoe7Af.net
かえってわかりにくくなる

930:デフォルトの名無しさん
17/10/16 12:12:06.22 Z0srHJQs.net
コマンドラインよりhandbookの方を翻訳してほしいよね

931:デフォルトの名無しさん
17/10/17 08:07:20.81 ALnPGbmE.net
2.4.2から2.5.3に上げたら、User defined type-guard functionとTagged union typeの組み合わせで
型をうまく判断してくれなくなった。バグか仕様変更かどっちだろう?

932:デフォルトの名無しさん
17/10/17 08:10:24.70 1Byit6P4.net
issueあさりにいけ

933:デフォルトの名無しさん
17/10/18 22:10:52.67 wBhwyrKl.net
TypescriptでReact使ってる人にお聞きしたいんですけど
Componentを継承して新しいコンポーネントを作るわけですけど、
class CurrentComponet extends React.Component<Props> {
}
とつくってさらに
class NewComponet extends CurrentComponet {
}
とやってNewComponetをつくるとしますよね。
それはそれで使えるんですけどNewComponetのpropsはCurrentComponetのpropsしか使えないですよね。
PropsをNewComponet用に拡張する方法ってないですかね?
素直に一からComponent作るしかないでしょうか

934:デフォルトの名無しさん
17/10/18 23:58:41.35 5bsiTMSo.net
>>893
class CurrentComponet<T extends Props> extends React.Component<T> {
}

935:デフォルトの名無しさん
17/10/19 09:09:43.33 33xh/nBB.net
>>894
うほー。神よ!
でもぶっちゃけ何が起こってるのかよくわかってないです。
> class CurrentComponet<T extends Props> extends React.Component<T> {
上記Tは一体いつ解決されてるんですかね。
そもそもTypeScriptでReactのコンポーネントの書き方ってこっちが正解だったりするんで?

936:デフォルトの名無しさん
17/10/19 20:20:28.20 LXr9z35K.net
それか
class CurrentComponet<T> extends React.Component<T&Props> {
}
でもいいな
こっちが使う側からすると楽かも
>>895
説明面倒だからggrks

937:デフォルトの名無しさん
17/10/20 00:43:33.60 aPV4O3Wb.net
moment.js 便利だな
今更だが

938:デフォルトの名無しさん
17/10/21 12:56:00.66 VqKLKVGY.net
>>896
単純にReact.d.tsと見比べてみると良い。結局使う時に<Props>を使えるようにCurrentComponet<T> としておくのが目的
ジェネリクス型に追加情報を与えるための概念と考えると分かりやすい。
<T>をTopに残しておいてそこを解決すると React.Component<T>も自動的に追従する

939:デフォルトの名無しさん
17/10/22 05:02:18.10 NdVgkCyx.net
>>897
イミュータブル好きならこっちやぞ。
URLリンク(github.com)

940:デフォルトの名無しさん
17/10/22 05:09:40.65 NdVgkCyx.net
>>871
いろいろあるけどちゃんと探した?
今さら誰かに再発明してもらって↓とかに勝てるの?
URLリンク(codesandbox.io)

941:名無しさん@そうだ選挙に行こう! Go to vote!
17/10/22 11:51:56.71 r0jppfs8.net
>>900
おっ。そこは知ってたけどTypeScriptのコード補完効くとしらなかったわ。ありがと

942:デフォルトの名無しさん
17/10/23 21:24:20.12 xr09IWoG.net
地味にawait書き忘れてちゃんと動かないというパターンが多発してるんですが
TSLintでawait入れ漏れで指摘する機能ってないですかね?

943:デフォルトの名無しさん
17/10/23 23:05:48.01 zzY32qse.net
>>902
c#だと書き忘れた場合はコンパイラが警告出してくれるんだけどね

944:デフォルトの名無しさん
17/10/30 07:24:42.96 I1PPVtSx.net
もう10月終わるけどまた駆け込みリリースかね

945:デフォルトの名無しさん
17/11/01 02:44:19.40 x/3omok5.net
Announcing TypeScript 2.6
URLリンク(blogs.msdn.microsoft.com)

946:デフォルトの名無しさん
17/11/01 23:51:55.80 x/3omok5.net
>>905
TypeScript 2.6.1 変更点
URLリンク(qiita.com)

947:デフォルトの名無しさん
17/11/02 12:10:31.71 Gd7lD1Ih.net
Angular 5.0.0がリリースされました
URLリンク(medium.com)
はやい、はやいよぉ…

948:デフォルトの名無しさん
17/11/02 20:11:59.50 eNK4k+UN.net
ffのアップデート並み

949:デフォルトの名無しさん
17/11/02 22:27:03.79 taAN7xor.net
なお間に合わなかったバグフィクスはガンガン後回しにしてリリースする模様

950:デフォルトの名無しさん
17/11/03 03:45:19.14 kJ3ZRkrN.net
アジャイルってそういうもんだし

951:デフォルトの名無しさん
17/11/03 05:18:11.47 IsjJm0uL.net
>>907
アンギュラーってぶっちゃけ使ってる人いるの?

952:デフォルトの名無しさん
17/11/03 07:42:27.47 gwa0lp/v.net
Google自身が使ってないのにどうして使うというのか

953:デフォルトの名無しさん
17/11/08 20:05:35.96 uhXC9xV7.net
URLリンク(html5experts.jp)

954:デフォルトの名無しさん
17/11/12 02:41:12.23 EwcJ+uHe.net
2.6になったらコンパイルエラーが多発する。react-redux のconnect周りで。
なんでー

955:デフォルトの名無しさん
17/11/12 13:16:12.66 oQrEnmVF.net
MEAN勉強中なのにangulerってマイナーなの?ショック

956:デフォルトの名無しさん
17/11/25 21:21:37.41 UiY7gN7d.net
コンストラクタを複数定義できないのでしょうか??
うーん。

957:デフォルトの名無しさん
17/11/25 21:28:52.67 UiY7gN7d.net
オーバーロードはできるけど、実装は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)を呼んでたんですけど、
これだと子に親のインスタンスの参照渡せないんですよね。

958:デフォルトの名無しさん
17/11/25 21:37:57.59 UiY7gN7d.net
ごめんなさい。これじゃ何いってるからんし、意味不明ですね。

959:デフォルトの名無しさん
17/11/26 00:19:08.88 mkIW06Zo.net
>>916
大分お疲れなようで…… Discriminated Unionsを使うとか?
URLリンク(jsbin.com)

960:デフォルトの名無しさん
17/11/26 04:33:36.78 Aye3R7gH.net
オブジェクト指向を学ぼう

961:デフォルトの名無しさん
17/11/26 23:18:17.65 rkyPHH9I.net
願望なんだけど
Typescriptは言語自体がWebアプリ開発用に
丸ごとフレームワークになったら良いと思う。
Flash(flex)のActionscript3も
フレームワーク化達成した様だし。
URLリンク(flex.apache.org)

962:デフォルトの名無しさん
17/11/26 23:25:22.11 pQh5Iwo2.net
>>921
JSのスーパーセット目指してるんだし無理に決まってんだろ

963:デフォルトの名無しさん
17/11/26 23:28:03.09 rkyPHH9I.net
すみませんリンク先間違ってました。
URLリンク(royale.codeoscopic.com)

964:デフォルトの名無しさん
17/11/26 23:33:18.08 i1z8rFU6.net
>>921
TypeScriptでkoa.js使えばいいんでわ?
なんか違うの?

965:920
17/11/26 23:51:34.59 rkyPHH9I.net
>>924
すみませんkoa.jsの存在を知りませんでした。
良さげなので検討してみます。

966:デフォルトの名無しさん
17/12/01 19:48:21.81 Qr863YVP.net
人気沸騰中のはずなのに年々参加者が減っていきついにアドカレ作られすらしなくなったTypeScriptさん

967:デフォルトの名無しさん
17/12/01 20:26:25.44 6V2me3Iy.net
TypeScript関係ないけど、アドカレVue.jsすげぇな。React人気ないのか??

968:デフォルトの名無しさん
17/12/01 20:32:35.43 u+SbUYxr.net
FBのゴタゴタがきいてるんかな

969:デフォルトの名無しさん
17/12/01 22:04:45.62 jFvanr8n.net
アドカレ的にはjs扱いなんじゃね?

970:デフォルトの名無しさん
17/12/01 23:41:41.28 tkoMYkG1.net
ES6普及したから
AltJSへの興味が薄れてるんじゃね?

971:デフォルトの名無しさん
17/12/01 23:55:12.47 jFvanr8n.net
まだasync await周りが完成してないけどね。
とりあえずmapとかfilterが普通に使えるようになってほしい

972:デフォルトの名無しさん
17/12/14 10:19:06.97 y5gxd1px.net
stackblitzいいな。マジでplayground系の決定版感ある。
URLリンク(stackblitz.com)

973:デフォルトの名無しさん
17/12/14 16:42:58.78 y5gxd1px.net
typeScriptのinterfaceで配列の要素数を制約する方法ってありますかね?

974:デフォルトの名無しさん
17/12/14 19:30:41.65 lO2D+k3i.net
>>932
vscodeみてーなUIだな

975:デフォルトの名無しさん
17/12/14 19:31:21.04 lO2D+k3i.net
>>933
何に使うの?
空でない配列なら分かるけど

976:デフォルトの名無しさん
17/12/14 19:43:58.65 ZmHWuRBr.net
tupleとして扱う

977:デフォルトの名無しさん
17/12/14 20:36:42.23 LW4O1R2X.net
tuple使え

978:デフォルトの名無しさん
17/12/14 22:26:15.12 lO2D+k3i.net
もしかして:タプル


979:機能を知らない let vec:[number,number=[1,1];



980:デフォルトの名無しさん
17/12/14 22:27:31.03 lO2D+k3i.net
ミス
let vec:[number,number]=[1,1];
もちろんこれでもOK
type Vec=[number,number];
let vec:Vec=[number,number];

981:デフォルトの名無しさん
17/12/14 22:29:51.71 LW4O1R2X.net
前にもタプルあるのにタプル欲しい言ってたやついたような

982:デフォルトの名無しさん
17/12/14 23:16:24.01 lO2D+k3i.net
URLリンク(www.typescriptlang.org)
タプルもだけど、このページ読んでない人多くね?
TypeScript語るなら&、|、is、keyofくらいマスターしておけよな

983:デフォルトの名無しさん
17/12/15 00:23:56.02 okgNcKTb.net
>>938
すっかり忘れとりました。Enumとかも使ってなかった。
>>941
ですよね。
>>934
online vscode と名乗ってる

984:デフォルトの名無しさん
17/12/15 10:29:49.56 sajYuSyc.net
(´・ω・`) デコレータがなんの役に立つのかわからん…

985:デフォルトの名無しさん
17/12/15 12:12:33.81 ehq3lI3U.net
一時期使ってみたが全部取っ払って今は一切使ってない
デコレータを使う設計自体が悪い
技術的負債になるワークアラウンドが不運にも市民権を得てしまったのがデコレータ
デコレータを使うのは未熟者の証

986:デフォルトの名無しさん
17/12/15 12:39:37.56 pWQR70OL.net
veu

987:デフォルトの名無しさん
17/12/15 13:09:01.78 VJqK9zii.net
使ってないけど、デコレータはDI(dependency injection)(依存性の注入)に使うんでしょ?
そもそもそれが必要な事なのか知らんけど

988:デフォルトの名無しさん
17/12/15 16:08:57.23 ehq3lI3U.net
DIはコンストラクタ注入だけでいい
メソッドだの継承だのデコレータだの無駄に複雑なだけ

989:デフォルトの名無しさん
17/12/16 11:15:39.58 Ab77UDQn.net
Angularもけっこう深い沼だな…

990:デフォルトの名無しさん
17/12/16 22:02:32.48 c6/WUVVQ.net
沼というか泥舟

991:デフォルトの名無しさん
17/12/17 16:05:22.54 dnHAQQNy.net
ionic はタイタニックだしな

992:デフォルトの名無しさん
17/12/18 13:13:38.64 2IRqztoA.net
あげ

993:デフォルトの名無しさん
18/01/16 20:27:44.97 FhxZLFGY.net
interfaceを使ってるとjsonでセーブする時にすごく便利なんだけどメソッドが生やせないのが辛い。
なんとかならないかな

994:デフォルトの名無しさん
18/01/17 16:20:55.33 AWcujNq7.net
手動で保存・復元すればOK

995:デフォルトの名無しさん
18/01/17 16:23:04.93 AWcujNq7.net
まぁ、classレベルならいいけど、interfaceレベルだときついかもしれんが。

996:デフォルトの名無しさん
18/01/18 18:36:14.16 c8bYFLwE.net
Announcing TypeScript 2.7 RC
URLリンク(blogs.msdn.microsoft.com)
毎回RC版出してるけど、VSCodeやTSって更新早いからいらないと思う

997:デフォルトの名無しさん
18/01/24 05:53:19.16 V1qhcEkf.net
localStorageとかreduxとか使ってると意図せず型変換が入ってtscはDate型の想定なのに実際はstringという状況マジ勘弁してください。

998:デフォルトの名無しさん
18/01/24 08:16:36.90 BFkGLEDk.net
>tscはDate型の想定なのに実際はstringという状況
そりゃ不適切な型付けしてしまっただけじゃね?
stringを入る可能性があるanyをDateと決め打ちしたとか。

999:デフォルトの名無しさん
18/01/25 22:12:47.33 cFDHLCLJ.net
DateがJSON serializableじゃないって話でTypeScriptの問題でもない

1000:デフォルトの名無しさん
18/01/29 11:43:46.31 16WZc9vb.net
インスタンスではなくclass を引数に取った関数を作りたいんですが、良い方法がないでしょうか?
redux.connectをラップする関数を作りたくて上記手段を求めています
サンプルコードはいかにおいています
URLリンク(goo.gl)

1001:デフォルトの名無しさん
18/01/29 11:48:46.22 16WZc9vb.net
>>959
すんません。自己解決
interface IBase {
new (message: string): Base;
}

1002:デフォルトの名無しさん
18/01/29 14:06:48.67 16WZc9vb.net
返り値とか省略すると推論してくれますけど推論の結果を取得する方法ってないですかね?
vscodeでカーソルを合わせてると出るんですけどカーソル合わせている間しか出ないのでコピペしづらくて。

1003:デフォルトの名無しさん
18/01/29 16:26:17.34 g7co9PB2.net
>>960
Baseって何を指すの?

1004:デフォルトの名無しさん
18/01/31 10:23:18.30 V9tZNzCA.net
TypeScriptでglobal import的なものってないですかね?
ロガーを作ったんですけど、それを毎回importするのがしんどくて

1005:デフォルトの名無しさん
18/02/01 14:40:42.51 ma2l7eSX.net
Announcing TypeScript 2.7
URLリンク(blogs.msdn.microsoft.com)

1006:デフォルトの名無しさん
18/02/05 22:05:36.77 wQgqkVj5.net
>>964
TypeScript 2.7.1 変更点
URLリンク(qiita.com)
2.8
Conditional types
URLリンク(github.com)
Type inference in conditional types
URLリンク(github.com)

1007:デフォルトの名無しさん
18/02/05 23:37:11.09 Rv6TwvHy.net
Conditional types関連は既にmergedなのか

1008:デフォルトの名無しさん
18/02/06 05:58:37.68 vXstL54C.net
小躍りしながら使ってみたところ速攻でバグにぶち当たって無事死亡
修正されるまで一回休み

1009:デフォルトの名無しさん
18/02/13 05:54:42.41 kAM/OKSF.net
型を後付した言語の限界があるよな。
ストレージに一度保存して意図せずjsonになってたり、関数のインターフェース上nullやundefind許容しない設定にしてても結局js側でnullの可能性のある値を渡されたらバグるし。
例えばjsとtsの境界部分。
モジュールとして外出ししている関数とかのインターフェースとかをきちんとnullチェックしてくれるコードを自動で埋め込んでくんないかな。

1010:デフォルトの名無しさん
18/02/13 06:47:09.07 a2BGtfue.net
それは信頼できないjsが悪いだけだろ
外部のクソコードはどうにもならん

1011:デフォルトの名無しさん
18/02/13 09:13:05.77 cOH/iFjL.net
TypeScriptが目指してるのはコンパイル時型チェックであって実行時型チェックではない
コンパイル時型チェックならパフォーマンスに影響はない(処理系によってはむしろ向上する)が実行時型チェックは明確にパフォーマンスが落ちる
PHPなんかは実行時型チェックを実装しちゃったもんだからクラスのメンバに型宣言するRFCすらリジェクトされてる

1012:デフォルトの名無しさん
18/02/13 15:21:25.94 xpZzv5qK.net
>>970
ですよね。それはわかっているんですが、、、、
せめてlint的な感じでjs向けのインターフェースが null| undefinedの可能性があるから直せみたいな警告が出るといいんですけど。
async func 内の await記入漏れと一緒にほしい。

1013:デフォルトの名無しさん
18/02/13 15:22:21.77 xpZzv5qK.net
URLリンク(blog.yux3.net)
あと objectとObjectがあるって知らなかった。
hyperappの型定義で始めて見た。

1014:デフォルトの名無しさん
18/02/13 22:00:08.76 XkJQyT0D.net
jsから呼ばれる部分はどうやってもチェックしようがないと思うぞ。

1015:デフォルトの名無しさん
18/02/20 18:34:14.34 KguAhC0Q.net
yarnのワークスペースを使用して、Create React AppとCreate React Native App (Expo) で共通のコードを共有する
URLリンク(taiyaq.com)
を参考にしてcreate-react-app でtypescriptプロジェクトを作ったんだけど
ワークスペース内での型情報の共有がうまくいかない。
それぞれ単体では動くんだけど。既に試している人っている?

1016:デフォルトの名無しさん
18/02/26 16:47:13.03 Y4Glcgpd.net
ブラウザで動く個人的なちょっとしたものしか作らなくて、
ライブラリはimportしないで自分でscriptタグで読み込んでるから、
@typesの定義だけ欲しいんだけど、今って中身のないstubばかりで
importしないと使えないんだけど、これってどうすればいいのでしょうか?
仕方なくファイルをルートにコピーして、意味がわからないまま
export as namespace hogehoge; みたいな文をくっつけたりして
何とか機能するようにしてるけど、非常に困ってます

1017:デフォルトの名無しさん
18/02/26 17:28:19.81 wXoocKSL.net
.d.tsファイルでインポートすればいいはず

1018:デフォルトの名無しさん
18/02/26 19:51:46.67 Y4Glcgpd.net
いろいろやってみたけど、なかなか上手くいかない。
tsc --listFilesってやると、定義自体は読み込めてるようなんだけど、
要するに、d.tsファイルがIsomorphic modules (UMD global)


1019:ってやつに対応した書き方になってなくて、 それに対応するためにexport as namespace hogehoge; が必要だったりするらしい https://www.typescriptlang.org/docs/handbook/modules.html#umd-modules



1020:デフォルトの名無しさん
18/02/26 21:54:01.34 0Cvn/PR2.net
>>975
ちょっと言ってることがわからないからこういうときは小さいサンプルでも作ってどっかにあげてみてくんない?
そしてそうやって小さくまとめてみると意外と自己解決したりするもんだ。

1021:デフォルトの名無しさん
18/02/26 23:16:55.53 Y4Glcgpd.net
例えば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とか
わけわかりません。

1022:デフォルトの名無しさん
18/02/27 01:53:35.35 ZLoGDkNB.net
>>979
@typesは別にオワコンじゃない。
型定義を提供するのに2つのルートがあるってだけ。
momentは作者側で型定義を提供してくれてるってだけ。
ところで解決したってことでいいんだよね?
/// <reference path="./mytypes/moment.d.ts"/>
みたいな感じでカスタムしたd.tsを読めばいいだけだし。

1023:デフォルトの名無しさん
18/02/27 01:59:51.55 ZLoGDkNB.net
つーかUMD対応中みたいだね
URLリンク(github.com)
ワークアラウンドとして
import * as _moment from 'moment';
export as namespace moment;
export = _moment;
というd.tsを作ってimportすればいい

1024:デフォルトの名無しさん
18/02/27 12:44:23.84 XDcEi9Sw.net
import使っちゃった意味ないんだけどね
vueみたいに複数のファイルに分けられちゃうと大幅に変えないといけないから
気軽にプルリクできない感じがする
だが自分でその場しのぎの対応してると、バージョン上げられた時に詰む

1025:デフォルトの名無しさん
18/02/27 12:53:20.87 XDcEi9Sw.net
勘違いしてた
import _moment from 'moment';
export as namespace moment;
export = _moment;
とか、
import _Vue from 'Vue';
export as namespace Vue;
export = _Vue;
みたいに書けばいいのか。
すごい。解決した

1026:デフォルトの名無しさん
18/03/01 22:44:29.35 V7eofqS1.net
次スレカモン

1027:デフォルトの名無しさん
18/03/12 23:33:32.22 ZJVFDbUv.net
TSConf 2018
URLリンク(tsconf.io)
初のカンファか

1028:デフォルトの名無しさん
18/03/16 08:23:22.72 K5Isy9NI.net
Announcing TypeScript 2.8 RC
URLリンク(blogs.msdn.microsoft.com)

1029:デフォルトの名無しさん
18/03/16 14:11:16.40 HcB/quXY.net
>>984
次スレのテンプレに入れたほうがいいものとかある?

1030:デフォルトの名無しさん
18/03/17 00:42:53.78 4Xu/HAYS.net
tsconfigのexcludeの項目を、compilerOptionsの中に書いてて、何でダメなんだろう悩んじゃった
設定はcompilerOptionsの中に書くものと思い込んでて、全然気付けなかった

1031:デフォルトの名無しさん
18/03/17 21:01:59.42 zUTKt+H5.net
>>987
リポジトリとかWikiとかWhat'sNewあたり?
あとは流れで

1032:デフォルトの名無しさん
18/03/28 08:14:57.22 3iq+90ex.net
Announcing TypeScript 2.8
URLリンク(blogs.msdn.microsoft.com)

1033:デフォルトの名無しさん
18/04/02 17:52:32.10 G4IZotVZ.net
俺のtypescriptが好きすぎる感情をどこにぶつけていいかわからない

1034:デフォルトの名無しさん
18/04/02 18:53:21


1035:.97 ID:aSG3UjFJ.net



1036:デフォルトの名無しさん
18/04/03 10:37:57.34 0rmSrban.net
>>991
俺も俺も!。qiitaでもいいしココでもいいよ!!

1037:デフォルトの名無しさん
18/04/03 11:33:16.29 R6gDm2yr.net
次スレよろ

1038:デフォルトの名無しさん
18/04/05 19:58:55.32 0c0qrJs0.net
スレ立てにぶつけることが決まったな

1039:デフォルトの名無しさん
18/04/20 07:03:30.59 yIya3QmH.net
どうしたん?人気あるわりにここ静かやん

1040:デフォルトの名無しさん
18/04/20 09:50:01.67 WJk0jxxj.net
続きはCMのあとで!

1041:デフォルトの名無しさん
18/04/24 20:06:57.83 TUZ43qB9.net
はよ次スレ

1042:デフォルトの名無しさん
18/04/24 21:50:54.24 BAt1Eldp.net
うむ

1043:デフォルトの名無しさん
18/04/26 21:48:57.62 mMDBzDaB.net

スレリンク(tech板)

1044:デフォルトの名無しさん
18/04/26 21:52:07.15 vM7mL5EC.net
safariが次のIEと呼ばれているように、
Typescriptは次のcoffeescriptと言われているwww

1045:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1092日 3時間 14分 38秒

1046:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch