[過去ログ] TypeScript part2 [転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
666(1): 2017/05/16(火)08:27 ID:MR0lnxJG(2/2) AAS
その「スキーマ」が何を指しているかよくわからんな。
まさか「JSON schemaありき」って言いたいわけじゃないだろうが。
667: 2017/05/16(火)09:01 ID:64KrDfHK(2/3) AAS
>>666
別に実装は何でもいいんじゃない?
先にJSONドキュメントそのものを設計しろってこと
668: 2017/05/16(火)10:11 ID:Jgr59aIg(1) AAS
objectを先に設計してstringifyの方が一般的だと思うが。
つまりtsなら型が先。
669: 2017/05/16(火)13:21 ID:xkpWN83w(1) AAS
jsonに対するinterface適用にわざわざスキーマ使うのはだるいな。
やはりメンバにtypeとかを事前に追加しておいて、そこを見てキャストさせるほうが楽だわ。もちろんそのjson自体が自分で改変可能である必要はあるが。
670: 2017/05/16(火)13:49 ID:6a8gh5yc(2/5) AAS
言語がサポートしてるのはその使い方だからな
671: 2017/05/16(火)14:24 ID:KRJlMJox(1/2) AAS
TypeScript ⇔ JSONSchema を相互に変換するコードは既に転がってるから
どちらでも好みで原本にすれば良いんじゃないの?
まぁあまり自動化を頑張っても、構造が複雑になると結局手書きが必要になる分野だとは思うけど
672: 2017/05/16(火)14:48 ID:64KrDfHK(3/3) AAS
型で記述しきれないバリデーションについてはDecoratorsを使うのがベストなんだろうけど、
interfaceには使えないんだよな
まあJSONだけならそれでもいいかもしれないが
673(1): 2017/05/16(火)15:28 ID:6a8gh5yc(3/5) AAS
リリースノートも見ずにオレオレソリューションひねり出すのやめない?
外部リンク:github.com
674: 2017/05/16(火)15:33 ID:4P1sgrCm(1) AAS
interfaceがトランスパイル後に消滅しちゃうの辛いよな。
言語機能でいい感じに残す機能つけてほしいが、そういう提案ってないの?
最近ついたというプラグインで可能になる?
675(1): 2017/05/16(火)15:42 ID:6a8gh5yc(4/5) AAS
>>662で公式で却下されたと書いてある
まあESの仕様壊すし残当
676(1): 2017/05/16(火)15:48 ID:KRJlMJox(2/2) AAS
>>673
この文脈 (>>642 648) では、型フィールドを信用するのはノーチェックと同じ意味だぞ
外部からのデータが、内部的な制約を満たすことの保証を求めてる
677: 2017/05/16(火)16:10 ID:6a8gh5yc(5/5) AAS
いや関数に隠蔽すれば壊すまではいかんか
>>676
入力データの検査も値レベルの制約も手でやること
型システムに求めることじゃない
型を信じてノーチェックが型安全でありそうでなければオーバーヘッドで死ぬ
本人もタイプガードで満足してるしそれが正解
678: 2017/05/16(火)17:11 ID:rTo/YyDO(1) AAS
>>675
まぁESの仕様+型だけだから学習コストが低いってのはあるしね。 でも直感的にinterface定義が消えちゃうのはなんだかなぁって気はする。
こうなったらES側に頑張ってもらうしかないな。パターンマッチング付けてー
679: 2017/05/29(月)18:33 ID:DGY6L2yw(1) AAS
>>651
コレが解決した。
悩んでいつつも暫定対処で乗り切ってただけに小骨が喉に刺さっているような気分でしたわ。
結論としてはtypeRootsオプションは/// <reference types=".." />
を使う時のpath解決でしか使わないって。
ハンドブックをどう読んでもそう書いているように見えない。
680: 2017/06/02(金)03:21 ID:0selKGQ0(1) AAS
typescriptでimmutablejs使ってるけどいまいち恩恵を得づらい。
updateInとかパスが補完効いたり出来ればいいのに
681(1): 2017/06/02(金)08:57 ID:vyfZNbsR(1) AAS
thisを変数に入れたいときの変数名ってみんな何してる?
_thisが使えればいいんだけどなー
682: 2017/06/02(金)09:08 ID:Ef+/+PyI(1/3) AAS
変数に入れた後のthisはthisなんですか・・・・?
683: 2017/06/02(金)09:09 ID:lCCVb2h3(1/3) AAS
thatだがそもそもそんなこと必要にならない
684: 2017/06/02(金)09:20 ID:8OnrstJc(1) AAS
JavaScriptのクロージャにおけるthis問題の回避はselfが定番
TypeScriptで必要なケースは少ないはずだけど
685: 2017/06/02(金)09:43 ID:LceXbV2F(1) AAS
>>681
_thisはダメなの?
686: 2017/06/02(金)10:31 ID:QxLZOlf9(1/2) AAS
_thisは重複エラーになっちゃうんでやすよね
目的としては、deferredを返すfunctionがあって、その返り値のdoneで呼び元のthisを使いたいんです
687(1): 2017/06/02(金)11:16 ID:Ef+/+PyI(2/3) AAS
やりたいことが分からん
コード例plz
688(1): 2017/06/02(金)11:38 ID:lCCVb2h3(2/3) AAS
アロー関数で済むやつでは
689(2): 2017/06/02(金)12:13 ID:QxLZOlf9(2/2) AAS
>>687
var testFucntion = () => {
var defer = $.Deferred();
defer.resolve("a");
return defer.promise();
}
省7
690: 2017/06/02(金)12:15 ID:Ef+/+PyI(3/3) AAS
>>689
>>688
691: 2017/06/02(金)12:17 ID:lCCVb2h3(3/3) AAS
草www
692: 2017/06/02(金)12:20 ID:jbvcqQ/c(1) AAS
自演乙としか
693: 2017/06/02(金)23:52 ID:7H2+/kur(1) AAS
functionが自然な場所は、アローにしてて、
アローで解決できる箇所はfunctionなのはなぜ。
694: 2017/06/03(土)02:14 ID:QIr3+kxI(1) AAS
>>689
doneのほうをアロー式にしたらいいんやで
あとvsで開発してる場合、デバッグ時にウォッチしたとき、そのthisにはtestFucntionが入るけど
実際にはちゃんと使いたい値が入ってるから安心しな
695: 2017/06/03(土)09:18 ID:bm3mvh5f(1) AAS
アロー使えばselfいらないって知った時感動した
696(1): 2017/06/04(日)01:06 ID:ioiT3hTG(1) AAS
Angular(2以降)の話題もここでよろしょうございますか?
697: 2017/06/04(日)02:05 ID:fuFkI60h(1) AAS
まったくではないが違うんじゃないか?
698(1): 2017/06/04(日)05:58 ID:xlmC5HkR(1) AAS
2chスレ:php
699(2): [!sage] 2017/06/11(日)19:15 ID:AskXGu9A(1/6) AAS
interface A{
x:string;
y:string;
}
interface B extends A{
x:number;
}
省4
700: 2017/06/11(日)19:18 ID:AskXGu9A(2/6) AAS
>>696
ngxのスレは別にある
701: 2017/06/11(日)19:55 ID:AskXGu9A(3/6) AAS
>>698
2以降はこっち
2chスレ:hp
702(2): 2017/06/11(日)20:29 ID:zURolSWc(1) AAS
>>699
型が変わったら継承できないのは当たり前では?
interface Parent {
x: string | number;
y: string;
}
interface A extends Parent {
省6
703: 2017/06/11(日)21:09 ID:y28miZDE(1) AAS
理解してない奴を炙り出すのにも静的チェックは必要なんやなって
704: 2017/06/11(日)21:21 ID:QZNztTAY(1/2) AAS
>>702
プロパティだとセットのときを考えるとcontravariantじゃないとダメだしゲットのときにはcovariantじゃないとダメだから結局invariantが必要になるような気がする
アクセサならsetのパラメタとgetの返却値で型が異なってもいいから問題ないと思うけど
705(1): 2017/06/11(日)22:09 ID:AskXGu9A(4/6) AAS
>>702
継承出来ないのは当たり前って言うのは分かる
ただ上書きする構文が欲しい
706: 2017/06/11(日)22:13 ID:QZNztTAY(2/2) AAS
>>705
ジェネリクスあるし上書きする構文が必要になる状況が分からん
707: 2017/06/11(日)22:22 ID:eD+QASKK(1) AAS
上書きなんぞせずとも別の名前付ければよくね?
デメリットしか思い付かないし実装されないと思うが、仮に実装されたとしても予想される実装方法はBの型を通してアクセスしたときは型名とかをprefix付けた別名になるようにトランスパイルされるようになるだけでしょ
708(1): 2017/06/11(日)23:47 ID:fVYgJSKO(1) AAS
extends Aじゃないけどその定義を流用してBを定義したいということか?
709: 2017/06/11(日)23:48 ID:AskXGu9A(5/6) AAS
>>708
そういう事
710: 2017/06/11(日)23:49 ID:AskXGu9A(6/6) AAS
B extends Aじゃないから当然
(hoge:B)=>{
let foo:A=hoge;
}
みたいな事は出来なくて良い(というか出来ない)
711: 2017/06/12(月)00:58 ID:F6aJQHtJ(1) AAS
継承じゃないんだから諦めてジェネリクス使いなよ
712: 2017/06/12(月)08:01 ID:9hAA1jJ7(1) AAS
世の中にxがstringかnumberの場合があるのなら、x: string | number という定義が正しい気がしますが
713(1): 2017/06/12(月)08:11 ID:R1uj6Z8h(1) AAS
ジェネリクスだと>>699の問題がどこまで解決できるんだろう。
714: 2017/06/12(月)08:26 ID:vVucOmau(1) AAS
>>713
interface X<T> {
x: T;
y: string;
}
interface A extends X<string> { }
interface B extends X<number> { }
715(1): 2017/06/12(月)18:05 ID:i2S9/2aT(1) AAS
flowとtypescriptって
どっちが良いの?
716: 2017/06/12(月)18:14 ID:/bUB16QZ(1) AAS
>>715
圧倒的TypeScript
異論は見ろめない
717: 2017/06/12(月)21:00 ID:5UNDPLtW(1) AAS
酔うの早すぎるだろ
718: 2017/06/13(火)22:10 ID:PMWJJsvl(1) AAS
Announcing TypeScript 2.4 RC
外部リンク:blogs.msdn.microsoft.com
719: 2017/06/14(水)08:28 ID:TtxDPC/b(1) AAS
enumってstring literal型出てからほぼ使わなくなったからなあ
コード内でimportできるのもよくわからん
何がよくなったんだ
720(1): 2017/06/14(水)09:04 ID:t483F9YG(1) AAS
新importは関数であることに意味がある
721: 2017/06/14(水)21:28 ID:YgZhsY+k(1/2) AAS
>>720
なるほど Promiseで返すってことはasync await 前提なんかな。
ちょっと非同期周りで互換性のないライブラリ使ってると途端に不便になるから
一長一短ではあるんだけど。全部がPromise使うライブラリで固められれば便利になるんかな。
722: 2017/06/14(水)21:29 ID:YgZhsY+k(2/2) AAS
jsの仕様変更そろそろ収まって欲しい。
import周りってこれで安定するようになるのかな。
723(1): 2017/06/15(木)19:20 ID:Zba3QY3O(1/2) AAS
filterの中でasync await って使えないんですかね?
724: 2017/06/15(木)19:24 ID:xqojsLNP(1/3) AAS
>>723
無理
rxjs使うか設計見なおせ
具体的に何をしたい?
725: 2017/06/15(木)21:25 ID:Zba3QY3O(2/2) AAS
filterの評価関数を作ろうとした時に、今まで作ったやつが全部プロミス返す設計になっていたので、
シームレスに使おうとしたらasync-awaitを使えないかなーと。
将来的にここもasync await使えるようになるのかな。
結局ループを回して絞込処理を実装しましたわ。
726: 2017/06/15(木)21:30 ID:xqojsLNP(2/3) AAS
rxjs使え
727: 2017/06/15(木)21:32 ID:xqojsLNP(3/3) AAS
それか自作。そんなに難しくないぞ
728: 2017/06/16(金)01:22 ID:uNQVqIhb(1/2) AAS
rx推しが謎すぎる。
729(1): 2017/06/16(金)07:51 ID:VSZ6CfqO(1) AAS
ループでawaitしちゃうってパフォーマンス悪くない?
await promise.all([].map(async () => {}))
こういうのが普通では?
730(1): 2017/06/16(金)12:37 ID:uNQVqIhb(2/2) AAS
>>729
ずっとpromise.allの存在を失念してた。
これでmap的な使い方できるね。
ところでtypescriptのプロジェクトで自作helperライブラリを使う時にいちいちimportを使うのが面倒くさいんで
自動でimportする設定ってtsconfigにないかな?
731: 2017/06/17(土)10:56 ID:254ieyWi(1/2) AAS
typescript便利だけどやっぱり型が後付の弊害がなかなかしんどい。
nullを許容しない前提かと思って使っても結局
実体はnullが突っ込んであったり する。
732: 2017/06/17(土)17:32 ID:Jhwo6DZg(1) AAS
弊害じゃなくて人為的ミス
誤りに気付いた者が正せばいい
733: 2017/06/17(土)22:27 ID:254ieyWi(2/2) AAS
swaggerのジェネレーターが出すコードなんだよね。プルリク出すのが面倒です
734(1): 2017/06/18(日)00:50 ID:GScuub4f(1) AAS
サーバーサイドの言語仕様とswaggerがstrict null checkに対応してないだけであって
typescriptは何も悪くないのでは
735: 2017/06/18(日)15:17 ID:xPH4G83l(1) AAS
ほんそれ
736: 2017/06/18(日)20:34 ID:9Ms8Oqe4(1) AAS
>>734
本体がstrict null check対応しても
モジュール側が対応してないとそこは無視するってことです?
例えばモジュールが強制的に T | undefined | null 型になるとかならいいんですけどね
737: 2017/06/19(月)00:15 ID:2IBzsU2g(1) AAS
type Action =
{
type: “A”,
id: number
} |
{
type: “B”,
省12
738: 2017/06/19(月)09:56 ID:nrLP7Uu1(1) AAS
インデックスシグネチャがstringかnumberしか受け入れない現状では
Aliasを定義する時点でキー(Action.typeの値)が
分かってるなら interface Alias { 'A'?: Func; 'B'?: Func; }
分からないなら interface Alias { [type: string]: Func; }
739: 2017/06/19(月)20:30 ID:8qDOjcU2(1) AAS
>>730
interface Actions {
A: {id: number};
B: {payload: any}
}
interface Arias {[key in keyof Actions]: () => Actions[key]}
こういうことかな?
740(1): 2017/06/19(月)21:29 ID:GKod7M3S(1) AAS
携帯から書いたけどエラー起きてるし意図理解できてなかった。
こういうことかな?
type Action = { type: "A" } | {type: "B"};
type Arias = {[K in Action["type"]]: () => void}
画像リンク[png]:i.imgur.com
741: 2017/06/19(月)22:19 ID:p+TikfUB(1) AAS
Arias(笑)
742(1): 2017/06/20(火)16:14 ID:Nl8VP77v(1) AAS
>>740
おー。聞いてみて良かったです。半分諦めてたんで。
上手く動きました。ありがとうございます。
743(1): 2017/06/21(水)12:13 ID:qahQSwg3(1) AAS
>>742
もっとこういう質問で賑わってほしい
書いてて気持ちいい言語だから
angularやreactは流行らなくていいけどフロント開発の標準はtypescriptになってほしい
744(2): 2017/06/21(水)14:47 ID:CAzvCkNY(1/3) AAS
>>743
定義ファイルがなくて自作するハメになると途端に苦痛になるけどな。
あとReactというかReduxつかってて合わせてimmutable.js使ってると
いつの間にかclassがjsonに変わってることがあってその場合はtypescriptの型と合わなくなるから
しんどい。型が後付じゃない言語ならこういうことがないから、ちょっと辛い。
結局reducer内で使う時にjsonからimmuatblejsのclassに変換して
state返す時にjsonに戻す処理を毎回入れる方針になった。
省3
745: 2017/06/21(水)16:08 ID:QjjhDd/n(1) AAS
>>744
新バージョンではXXX.setが型安全になるからもう少し待て
リテラル型とkeyofを使うらしい
746(2): 2017/06/21(水)19:23 ID:CAzvCkNY(2/3) AAS
外部リンク:goo.gl
こんな感じのコードでファイルのアップロード処理を作りたいんですが
上手く動かなくて悩んでいます。 お助け下さい
上下前次1-新書関写板覧索設栞歴
あと 256 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.024s