TypeScript part2 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2015/04/30(木) 18:37:29.98ID:ynMflk1l
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/
2017/06/17(土) 10:56:23.79ID:254ieyWi
typescript便利だけどやっぱり型が後付の弊害がなかなかしんどい。
nullを許容しない前提かと思って使っても結局
実体はnullが突っ込んであったり する。
2017/06/17(土) 17:32:41.06ID:Jhwo6DZg
弊害じゃなくて人為的ミス
誤りに気付いた者が正せばいい
2017/06/17(土) 22:27:47.68ID:254ieyWi
swaggerのジェネレーターが出すコードなんだよね。プルリク出すのが面倒です
2017/06/18(日) 00:50:13.20ID:GScuub4f
サーバーサイドの言語仕様とswaggerがstrict null checkに対応してないだけであって
typescriptは何も悪くないのでは
735デフォルトの名無しさん
垢版 |
2017/06/18(日) 15:17:38.51ID:xPH4G83l
ほんそれ
2017/06/18(日) 20:34:02.75ID:9Ms8Oqe4
>>734
本体がstrict null check対応しても
モジュール側が対応してないとそこは無視するってことです?
例えばモジュールが強制的に T | undefined | null 型になるとかならいいんですけどね
2017/06/19(月) 00:15:28.42ID:2IBzsU2g
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 の条件に入れたいってことなんですが。
2017/06/19(月) 09:56:19.65ID:nrLP7Uu1
インデックスシグネチャがstringかnumberしか受け入れない現状では
Aliasを定義する時点でキー(Action.typeの値)が
分かってるなら interface Alias { 'A'?: Func; 'B'?: Func; }
分からないなら interface Alias { [type: string]: Func; }
2017/06/19(月) 20:30:47.90ID:8qDOjcU2
>>730
interface Actions {
A: {id: number};
B: {payload: any}
}


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

こういうことかな?
740デフォルトの名無しさん
垢版 |
2017/06/19(月) 21:29:43.40ID:GKod7M3S
携帯から書いたけどエラー起きてるし意図理解できてなかった。
こういうことかな?
type Action = { type: "A" } | {type: "B"};
type Arias = {[K in Action["type"]]: () => void}
http://i.imgur.com/17xtAlw.png
2017/06/19(月) 22:19:36.13ID:p+TikfUB
Arias(笑)
2017/06/20(火) 16:14:46.75ID:Nl8VP77v
>>740
おー。聞いてみて良かったです。半分諦めてたんで。
上手く動きました。ありがとうございます。
2017/06/21(水) 12:13:37.61ID:qahQSwg3
>>742
もっとこういう質問で賑わってほしい
書いてて気持ちいい言語だから
angularやreactは流行らなくていいけどフロント開発の標準はtypescriptになってほしい
2017/06/21(水) 14:47:30.10ID:CAzvCkNY
>>743
定義ファイルがなくて自作するハメになると途端に苦痛になるけどな。
あとReactというかReduxつかってて合わせてimmutable.js使ってると
いつの間にかclassがjsonに変わってることがあってその場合はtypescriptの型と合わなくなるから
しんどい。型が後付じゃない言語ならこういうことがないから、ちょっと辛い。
結局reducer内で使う時にjsonからimmuatblejsのclassに変換して
state返す時にjsonに戻す処理を毎回入れる方針になった。

immutable.jsは全然typescriptと相性が良くない。
XXX.set(‘member’, value) みたいな構文になるから。
もっとtypescriptで使いやすいimmutableなライブラリないかしら。
745デフォルトの名無しさん
垢版 |
2017/06/21(水) 16:08:20.66ID:QjjhDd/n
>>744
新バージョンではXXX.setが型安全になるからもう少し待て
リテラル型とkeyofを使うらしい
2017/06/21(水) 19:23:40.28ID:CAzvCkNY
https://goo.gl/7Ty7Tq
こんな感じのコードでファイルのアップロード処理を作りたいんですが
上手く動かなくて悩んでいます。 お助け下さい
747デフォルトの名無しさん
垢版 |
2017/06/21(水) 21:09:26.65ID:nUhsZ0ik
>>746
ブラウザのセキュリティ設定で、`input.click()`はfileエレメントには効かないみたいですね。
https://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input
748デフォルトの名無しさん
垢版 |
2017/06/21(水) 21:50:59.59ID:nUhsZ0ik
>>744
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

https://goo.gl/j6hy4T
2017/06/21(水) 22:49:52.97ID:CAzvCkNY
>>747
こちらは結局 イベントリスナーをcickではなくchange にすることで上手く動くようになりました。

>>748
typescriptのジェネリクスの性能いいですね。
結構知らない機能がまだありそう。
2017/06/22(木) 00:17:25.62ID:u6z6+xvR
>>749
それはよかったです、てっきりclickイベントをjsで発火させてファイル選択ダイアログを自動で開かせたいのか思ったw
2017/06/22(木) 17:18:45.24ID:77+4f1XL
>>750
そうなんですけどリスナーのイベント指定がclickではなくchnageだったってことです。
https://goo.gl/QHZCsG

before
i.addEventListener(‘click’, async (e) => {
after
i.addEventListener('change', async (e) => {
2017/06/22(木) 18:30:45.28ID:b2Lz7aux
>>751
たしかのそれもひとつの原因ですね
ですがclickイベントの発火も多分動かないのでは?chブラウザにもよると思いますがchromeで動かなかったですよ
2017/06/22(木) 19:47:44.81ID:77+4f1XL
>>752
動きましたよ。少なくともchromeでは。動くコードを>>751に貼ったんで
754デフォルトの名無しさん
垢版 |
2017/06/22(木) 20:06:21.77ID:u6z6+xvR
>>753
>>751は手動のクリックイベントからclick発火してるので動きますね
>>746はsettimeout内でclick発火してるので、動かないです
2017/06/24(土) 00:04:21.44ID:7kzB7ca0
typescriptでreduxのミドルウェア書いてる人っていませんか?

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

上記interfaceを満たすコードを書けなくて困ってます。サンプルコード的なのどっかにないですかね?
756デフォルトの名無しさん
垢版 |
2017/06/25(日) 15:04:59.28ID:k1gomwYO
reduxってreact関係の何かなのかな?
相変わらずreactの作法は意味不明
流行らずに消えてほしい
2017/06/25(日) 15:18:46.73ID:dKXT3hQ7
すみません
今パッケージングというのかライブラリのシステムは何を使うのが正解何ですか?
electronやってみようと思ってタイプライブラリをいれようと思っていろいろなサイト見てやってるんですが
どれも失敗します

今の定番の方法を紹介してるサイトってありませんか?
それとも今は時期がまずいんでしょうか?
2017/06/25(日) 16:41:50.61ID:OCPIhIaN
npm -i @types/XXXX
2017/06/25(日) 17:11:28.11ID:k1gomwYO
>>757
よくわからないけどelectronのtypescript開発は少しややこしい
メインプロセス側と画面側でプロジェクト分けるのが主流で、メインプロセス側はgulpビルド、画面側はwebpackビルドみたいになって少しややこしい
2017/06/25(日) 19:32:19.06ID:o1GCb4AX
回答ありがとうございました

もうしばらく待ってみます
2017/06/26(月) 10:42:55.52ID:B+I0vs4D
>>756
はやっちゃってるんだよなぁ。
React自体は凄くTypeScriptとの親和性は高い。というかむしろ推奨しているくらい。
ただReduxはTypeScriptからどう使えばいいのかよくわからなくて
2017/06/26(月) 15:37:27.06ID:B+I0vs4D
>>755
自己解決したので書いておきます
ただのロガーの場合

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;
};
}
2017/06/27(火) 16:22:46.76ID:xkXC4vKS
typescriptで書かれてる有名なライブラリって何があるの?
Rx.jsはtypeScriptで書かれてたね。
764デフォルトの名無しさん
垢版 |
2017/06/27(火) 16:42:32.21ID:mpuQzI8/
フレームワークだけどngx
2017/06/27(火) 18:35:39.52ID:5NUjqPYf
Dartどっかいったな
766デフォルトの名無しさん
垢版 |
2017/06/27(火) 19:04:32.75ID:mpuQzI8/
googleが作る言語はゴミばっかだからしゃーない
言語のセンスは圧倒的にMSの方が上
MSというよりヘルスバーグが有能すぎる
2017/06/27(火) 22:13:14.24ID:xkXC4vKS
>>766
goはいいぞ。素朴でモダンという相反する要素を持ち合わせてる。
エコシステムはモダン。
言語仕様は素朴。
2017/06/27(火) 22:20:02.75ID:rQeMEWtY
J++とかJ#とかManaged C++とか割と救いようのないものも作ってるけどねMicrosoft
でも全体としては確かに良い言語が多い印象

Googleの言語もGoとか(使ったことないけど)人気みたいだし, そもそも作った言語の数が大分違う気が
769デフォルトの名無しさん
垢版 |
2017/06/27(火) 23:37:36.64ID:mpuQzI8/
>>767
ジェネリクス追加されるまでは様子見…
2017/06/28(水) 03:33:15.38ID:4SuBLGV6
マイクロソフトはvsc出したときはなんでatomの二番煎じやってんのって思ったけどやはり製品としての完成度高くて感動する。
開発環境作らせたら最強と言う噂は伊達じゃない。
2017/06/28(水) 09:12:54.31ID:9HmGLvwZ
>>763
angular2
2017/06/28(水) 14:22:19.39ID:R0ZTQr0d
Announcing TypeScript 2.4
https://blogs.msdn.microsoft.com/typescript/2017/06/27/announcing-typescript-2-4/
773デフォルトの名無しさん
垢版 |
2017/06/28(水) 16:15:00.25ID:7uiFkJf0
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い
2017/06/28(水) 16:19:23.04ID:DxMay05+
MSは言語と開発環境では最強
ネットや機械学習ならGoogle
アップルは…嫌い
775デフォルトの名無しさん
垢版 |
2017/06/28(水) 16:28:12.57ID:7uiFkJf0
>>774
何こいつ怖い
2017/06/29(木) 16:13:29.70ID:f9ij8X2q
すいません。

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

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の内容変更に合わせて自動的に作る方法ってないですかね
2017/06/29(木) 16:20:59.60ID:f9ij8X2q
自己解決
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'];


思いの外簡単であった
2017/07/10(月) 13:26:30.50ID:gqDySAuG
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に指定は駄目ってことらしい。
上記エラーメッセージからどう読み取ればそういうことなわけ?
2017/07/10(月) 19:20:13.57ID:lPQJaLkK
template登場したての頃のc++みたいだな
2017/07/12(水) 20:52:57.67ID:iKt9vtZC
@typesやパッケージ自身が持っているd.tsに問題があるとき、自分のプロジェクト内で
部分的に修正版と差し替えたりできないのかな?
Typescript2.4に上げたらいくつかのパッケージがエラーを出すようになってしまったんで
大元が対応するまでの間ちょっと回避したいんだが。
2017/07/12(水) 21:44:01.43ID:46U9BX05
>>780
https://teratail.com/questions/83920
2017/07/12(水) 22:50:59.04ID:iKt9vtZC
リンク先のそれは解決法として正しいのかという疑問はあるがとりあえず、declareで
定義を上書きできるということかな。試してみるわ。ありがとう。
2017/07/13(木) 12:11:08.28ID:SeGC5rTL
ここでredux-observale薦めてもらったのもあって試してるんだけど
epicを書く時 action$.ofType('FIRST’)って書いてfilterするのはいいんだけど返ってくる
Observaleがtype:’FIRST’に絞り込められてくれない。
無理やりキャストして使えってこと?
いい方法教えてください
2017/07/14(金) 00:10:59.94ID:UTvPeefr
VS2017は2015と違ってJavaScriptで
var a = {};
a.b = 1;
と書いてその下に「a.」と入力しても候補にnumber型プロパティとしてのbはない
TypeScriptのnamespaceがブラウザの生JavaScriptでも使えるようになったら便利そうなんだけどな
2017/07/14(金) 15:42:06.74ID:AYnLv9ir
>>782
いやいや。具体的に指摘してほしいな。
reduxのactionは基本的にobjectであれば何でもあり。というスタンスのもので
そのactionに継承関係を設定してるのはたまたま定義ファイルの作者がなんとなく決めた程度のものでしかない。

となると元々の定義を修正してしまっても不都合はないと思うんだが。

更にいうとreduxのmiddlewareの定義ファイルも、結構declareで大元のreudxの定義を改変してる。
(redux-thunkとかredux-promiseとか)
2017/07/14(金) 22:07:24.48ID:Ukk3qL4L
「具体的に」と言っている当人が具体的にに何を指摘しているのかわからない件
2017/07/17(月) 02:22:25.78ID:HJdOjxBV
モジュール拡張書いてる人っていますか?
ローカルではうまく書けるんだけど、
npmで管理して外部モジュール化しようとするとうまく動かなくなる。
jsとd.tsに別れるとだめなんだろうか、、、、。
なんか参考になるnpmライブラリが有るなら事に教えてくださいm(_ _)m
788デフォルトの名無しさん
垢版 |
2017/07/17(月) 09:24:35.44ID:3rVoB3WX
>>787
jsとd.tsを同じ所に置けばおk
angularとか参考になるよ
2017/07/17(月) 12:07:57.24ID:HJdOjxBV
>>788
ありがとうざいます。js とd.tsは同じ場所においてます、、、、
ちょっとangularはわからなかったのですが
rxjs5はoperatorをモジュール拡張の仕組みを使っているので参考になりました。
それを元に書いてるんですが、、、
どうしてもうまくいかないです。
790デフォルトの名無しさん
垢版 |
2017/07/17(月) 12:30:35.11ID:3rVoB3WX
>>789
npm rxjsした時のフォルダ構成とビルド結果が同じようにすればおk
もちろんパッケージ.jspnとかもな
2017/07/20(木) 13:43:30.16ID:9ngnJ+y5
typescriptってユーザー数多そうなのに
どこに生息してるん?
teratailもあんまりいなさそうだし。slackとかかね?
おせーてください
2017/07/20(木) 15:04:36.06ID:heFqzBlt
typescript は google 社員御用達だぞ
ここのレスも 99 割が google 社員のもの
2017/07/20(木) 15:14:04.11ID:9ngnJ+y5
MSとgoogleのマリアージュとか最高じゃないかな。
794デフォルトの名無しさん
垢版 |
2017/07/20(木) 17:31:24.01ID:YwOQZRBC
>>791
TypeScriptはほぼJSだから他の言語と違って特に質問するような事ないし…
2017/07/20(木) 20:56:24.88ID:9ngnJ+y5
>>794
定義ファイル周りとか結構悩むことない?
例えばreduxとかそのまま使うとTypeScriptの補完機能を活かしきれなくて
typescript-fsaとかを使って補強してやると凄く調子良く動く。
2017/07/28(金) 10:18:51.65ID:O7VztC89
https://jp.vuejs.org/v2/guide/typescript.html
vuejsもtypescriptとの親和性上がってるのかな。
昔はいまいちだったんだけど
2017/07/28(金) 21:08:46.09ID:O7VztC89
typescriptでjest使ってる人っています?
行番号がめちゃくちゃになっちゃうんですが、どうすればいいんですかね?
inlinesoucrmap: trueにセットしても改善せず。
行番号以外は上手く動いてるんですけどね。
2017/07/30(日) 23:55:24.33ID:W7NHR4pI
es2015とかes2017はどうかな?
async await使えるの幸せ。
2017/08/03(木) 14:06:03.33ID:GUb8aQei
さすが俺達のTypeScript

TypeScripts Type System is Turing Complete
https://github.com/Microsoft/TypeScript/issues/14833
2017/08/03(木) 19:19:00.00ID:WxFDmNeE
>>799
ジェネリグスだけでプログラミングできるってこと?
わけわかめ
2017/08/04(金) 00:27:45.60ID:LmyTNXHn
ようやくHTML+CSSに追いついたわけだな
https://cpplover.blogspot.com/2013/10/blog-post_20.html
2017/08/12(土) 11:10:59.59ID:3DdLvbHE
tsconfig.json で noImplicitAny をtrueにしてみたら、npmからのモジュールをimportしている部分で
こういうエラーが大量に出るようになってしまった。

error TS7016: Could not find a declaration file for module 'モジュール名'.

importをrequireに戻したら逆に不便だし、自分で .d.ts を用意するには数が多すぎて追いつかない。
noImplicitAny の対象を自分のコードのみに限定する(node_modules以下を対象外とする)
なんてことはできないんだろうか。
2017/08/12(土) 11:34:41.06ID:DE4QKP9/
>>802
俺は普通に使えてるけどな。tsconfig全体を貼ってみたら?
2017/08/12(土) 11:38:02.30ID:DE4QKP9/
あと使ってるライブラリも。ライブラリによって違うのかな?
俺はreduxとかreactとかmoment.jsとかimmutable.jsとか色々入れてるけど
特にそういう不具合が起きたことはないな。
多分デフォルトでtsconfigの中身はnode_modules対象外な気がする。

一応聞くけどwebpack使ってないよね?
2017/08/12(土) 11:51:37.20ID:3DdLvbHE
このへんのモジュールが引っ掛かった。全部じゃないけど。

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の設定を間違えているのかな?
2017/08/12(土) 15:39:16.07ID:DE4QKP9/
なんだ、全部のd.tsが見つからないって言ってるわけじゃないなら、node_modules関係なくない?
足りないd.tsファイルは自作するしかないでしょ。インストールしたのに見つからないなら問題だけど
2017/08/12(土) 15:56:35.18ID:DE4QKP9/
webpackのresolveが抜けてるんじゃない?

resolve: {
extensions: ['.ts', '.tsx', '.js', '.jsx'],
modules: [
"node_modules/"
]
},
2017/08/12(土) 16:09:16.06ID:DE4QKP9/
>react-spin
あとreact-spinは型定義にないみたいね。でもこれくらいなら五分で自作できるから大丈夫。
2017/08/12(土) 18:30:45.13ID:3DdLvbHE
>>806
noImplicitAny = false なら .d.ts が無くても使えていたんで何か方法はないかと思ったけど、
無いならしょうがないね。ありがとう。
2017/08/12(土) 19:23:03.92ID:DE4QKP9/
>>809
いやいや。簡単だから諦めないでよ。特にreact-componentなら簡単に自作できる

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/material-ui-pagination/index.d.ts
これとか参考になると思う
2017/08/12(土) 19:49:53.59ID:3DdLvbHE
最初に書いたとおり、単に数が多いからやってられんてだけ。
2017/08/12(土) 19:58:06.64ID:DE4QKP9/
>>811
あーなるほど失礼
もともとjs案件だったってこと?
2017/08/13(日) 21:25:13.43ID:LJmg41iW
(new Error()).stack みたく 実行箇所のtsファイル名と行番号を取得する方法ってないですかね。
プリプロセッサみたくコンパイルする過程でファイル名と行番号に変換するような定数があればいいんですけど
2017/08/15(火) 09:46:45.08ID:yLrj+bDi
o : any が"x"というメンバーを持っているか調べるのは if ("x" in o) でできるけど、
o.x の型がstringかどうか調べようと if (typeof o["x"] === "string") とやるとESlintの
no-string-literalに引っかかってしまう。
このルールを無効にする以外にメンバーの型をチェックする方法ってないですかね?
2017/08/15(火) 14:18:14.33ID:tN8D0FqC
>>814
無理 any型を使ってる時点でtsにできることは無い
2017/08/15(火) 14:30:58.84ID:Yyv6Foyi
>>814
一旦変数に入れてからアクセスすればいいんじゃない

const x = "x";
if (typeof o[x] === "string") { ...
2017/08/15(火) 15:31:46.37ID:yLrj+bDi
>>816
なるほど、そんな方法が。うまくいったみたい。ありがとう。
使う直前で変数に入れるならdisableにするのとさほど変わらないけど、メンバー名はどこかで
一元管理しておけってことかな。
2017/08/15(火) 17:11:17.08ID:tN8D0FqC
>>817
単に変数oにinterface定義してあげればいいだけでは。
そもそもtslintじゃなくてeslint使っているという状況もよくわからない
2017/08/15(火) 17:54:36.31ID:yLrj+bDi
あぁ、eslintって書いたのはtslintの間違い。

>単に変数oにinterface定義してあげればいいだけでは。

ネットワークやファイル経由のjsonとか、型情報が落とされたオブジェクトからの復元なんで。
2017/08/15(火) 23:34:39.69ID:Yyv6Foyi
>>818
いや静的型チェックと実行時型チェックをごっちゃにしちゃダメでしょ
TypeScriptは静的型チェックを提供するものなんだから実行時型チェックにinterfaceなんて持ち出す道理がない
2017/08/17(木) 11:02:47.05ID:wX4L2Jep
>>820
そうだったね。ごめん
2017/08/22(火) 22:13:44.37ID:/ptFhj0b
TSの環境の開発の旗振りって誰?
いつになったら開発環境が安定するの?

webの情報のほとんどが古くて使えない
2017/08/22(火) 22:37:14.07ID:1PU0SC+v
まずVSCodeをインストール
npmでts2.xをインストール
型定義は@types/xxxxxxx
2017/08/23(水) 13:19:39.56ID:12Hdps1J
msで作ってるから、まずはmsの開発環境試してみればいいんだろうけど、
大元の実装が不安定だったりするの?
https://github.com/Microsoft/TypeScript/wiki/Architectural-Overview
2017/08/23(水) 13:23:34.59ID:YtvD4LeH
TypeScriptの実装じゃなくて環境の方だろ?
型定義ファイルもTypingsとか@typesとかいろいろ変遷してきたし
2017/08/23(水) 19:59:00.18ID:KTb6BBkr
TypeScript1.0が出たころ何冊も本が書かれたけど、その後どんどん進化するから誰も手を出さなくなったな。
2017/08/23(水) 20:36:30.14ID:CbozNT9/
進化に関係なく使う人が居て需要があれば本は出される
出されないってことは・・そういうことだ
2017/08/25(金) 02:06:21.27ID:+9ilYHDI
ジェネリクスで教えてほしいことがあるんですが
型がundefinedかそうでないかで処理分岐をしたいんですがどうすればいいでしょうか

https://goo.gl/L6wazS

上記のようなコードはジェネリクスだとPはコンパイル時に解決されるものだからダメですよね。
じゃあどうすればいいんでしょうか。
もちろん引数にpayload:P みたいなのがあればtypeGaurdが使えるんですけど、それがない場合は?
2017/08/25(金) 07:45:31.16ID:HjHZR7Zb
試してないけど、Pのローカル変数を置いてみるのは?
初期化できないとダメかな。
2017/08/25(金) 09:42:23.66ID:WV+v2bcZ
コンパイル時に型自体の比較が出来ればいいんだけどねぇ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況