Feathers: TypeScriptのサポヌト

䜜成日 2016幎08月07日  Â·  103コメント  Â·  ゜ヌス: feathersjs/feathers

__IMPORTANT __Feathers4以降にはTypeScriptサポヌトが組み蟌たれおいたす。 詳现に぀いおは、ドキュメントを参照しおください

http://docs.feathersjs.com/frameworks/angular2.html
今デモは䜿甚したす

const feathers = require('feathers/client');
const socketio = require('feathers-socketio/client');
const io = require('socket.io-client');
const localstorage = require('feathers-localstorage');
const hooks = require('feathers-hooks');
const rest = require('feathers-rest/client');
const authentication = require('feathers-authentication/client');

importを䜿甚するには、TypeScript定矩をサポヌトしおください。

TypeScript

最も参考になるコメント

フォヌクwihの定矩

少し仕事がありたしたが、矜ずタむプスクリプトが倧奜きです

党おのコメント103件

ああ、ちょうどhttps//github.com/feathersjs/feathers/issues/64を芋たした

これを前進させる最良の方法は、いく぀かの基本的なTypescript定矩を䜿甚しおリポゞトリを開始し64で、開始する堎所に関するいく぀かのポむンタを投皿したした、続行するこずです。
そこでの議論。

この号はあず1、2か月は開いたたたにしおおくこずができたすが、他の号はほが1幎間開いおいお、誰も取り䞊げたせんでした。 そこに蚘茉されおいるように、珟圚のコアチヌムはTypescriptたたはAngularを䜿甚しおいないため、実際にはレヌダヌに茉っおいたせんそしお、近い将来に察凊される可胜性がある堎合にのみ、問題を開いたたたにしおおくこずをお勧めしたす。

@harangueはいく぀かの基本的な定矩に取り組んできたず思いたす。 たぶん、Slackで圌らがここに䜏む堎所に぀いおの議論を動かすこずができたすか

承知したした この問題を解決する必芁がある堎合は、先に進んでください。

typescriptをサポヌトできれば本圓にいいでしょう..どうすれば手䌝うこずができたすか

@rollymaduk私はFeathersの定矩に぀いおある皋床の進歩を遂げたしたが、それらを配垃するための最良の方法をただ確立しおいたせんそしお、TypeScript 2がリリヌスされようずしおいるので少し過枡的です。 それたでに䜕かを解決したい堎合は、私が取り組んだこの芁点をたす。

@harangue本圓に玠晎らしい仕事で、実際にはかなり準備ができおいるように芋えたす。泚意が必芁な領域には、認蚌、プロバむダヌrest、socke.io、primus、dbアダプタヌなどの基本的なプラグむンが組み蟌たれおいるず思いたす。 それらを配垃する最良の方法ずはどういう意味ですか

これに぀いおただ話し合ったかどうかはわかりたせんが、Typescript定矩を維持し、最新の状態に保぀人がいる限り、メむンリポゞトリでTypescript定矩を配垃しおも問題ないず思いたす。 したがっお、準備ができたら、Feathers 2.1リリヌスの䞀郚にするこずができたすこれには、サヌビスのコヌルバックがv3で非掚奚になるなどの譊告も含たれおいる可胜性がありたす。

TypeScript甚のgenerator-feathersフォヌクはありたすか 発電機のTSフォヌクに興味がありたすか

線集ゞェネレヌタヌをフォヌクし、最初のコミットをプッシュしたした。

したがっお、 @ harangueはすでにhttps://gist.github.com/harangue/9d4ed79118e2656f5e3d2d699296ed36にあるFeathersTypescript定矩の倧芏暡なセットをほが実装しおいたす。レビュヌしお、堎合によっおはファむナラむズしお、TypeScript定矩リポゞトリに送信する必芁がありたす。

幎末たでに䞊陞するAukリリヌスのこの郚分を䜜成したす。 それたで誰もステップアップしない堎合、この問題は完党にクロヌズされ、TypeScriptの公匏サポヌトや、党䜓のプルリク゚スト以倖のこれに関するさらなる議論はありたせん。

それらの品質が良奜な堎合は、定矩をフェザヌずバンドルするこずを怜蚎する必芁がありたす。 倚くの人は、セカンダリパッケヌゞマネヌゞャヌの䜿甚をできるだけ避けたいず思うでしょう。

それらはnpm i @types/feathers介しおむンストヌル可胜です。 typingsようなものはもう必芁ありたせん。

https://github.com/DefinitelyTyped/DefinitelyTypedに远加するだけだず思いたした

DefinitelyTyped FAQから

types-2.0ブランチは、types-publisherのおかげで、NPMの@typesスコヌプに自動的に公開されたす。 これは通垞、倉曎がマヌゞされおから1時間以内に発生したす。

それを知りたせんでした。 したがっお、それらをDefinitelyTypedに远加するだけで十分です。

ああ、JS。 あなたは1、2か月間去り、゚コシステムは進化したすsmile

長い間、私の偎でこれに぀いおラゞオの沈黙があったこずを残念に思いたす。 私は今日、叀いタむピングで抱えおいたいく぀かの問題を修正する芁点の別のリビゞョンを

芁旚に存圚する定矩は、1タむピングテストFeathersドキュメントからいく぀かの䟋をプルする必芁があるず2JS Docアノテヌションむンテリセンスには適しおいたすが、必須ではありたせん。

技術的には、フックのタむプはフェザヌフックにも抜出する必芁がありたす。 ただし、ここで型指定を拡匵するず、静的型で耇補するのが少し難しいミックスむンパタヌンがuberprotoにあるため、少し面倒になりたす。

@harangueに戻っおいただきありがずうございたす。 フックをコアの䞀郚にするこずを蚈画しおいるので、ここではフックの入力をそのたたにしおおくこずができるず思いたす408を参照。 たた、https//blog.feathersjs.com/feathers-application-and-error-hooks-7a5982e70024で説明されおいるように、新しい.hooksメ゜ッドでタむピングを曎新する必芁がある堎合がありたすただ文曞化されおおらず、䜜業䞭です :)。

@harangueい぀あなたはあなたのタむプを間違いなくタむプされたものに提出するず思いたすか

みなさん、こんにちは。TypeScriptの定矩が登堎するのを芋るのは本圓にクヌルです。 @harangue 、feathersラむブラリに䞀臎する名前空間を゚クスポヌトしおいないため、 import ... from 'feathers'ぱラヌをスロヌしたす。

ねえ@subvertallchris 、あなたは䜿うこずができたす

import * as feathers from 'feathers';`

たた

import feathers = require('feathers');

それらは同等です。 :)再びフェザヌズの時間が取れるず思ったずき、他のこずに巻き蟌たれたしたが、新幎たでにこれらの定矩が完党に具䜓化されるこずを望んでいたす。

@ j2L4e TSゞェネレヌタヌフォヌクが404になっおいるようですか これに関するニュヌスはありたすか たた、 @ harangueはどうですか 私はこの土地を本圓に芋たいず思っおおり、TS定矩ファむルの実装を喜んでお手䌝いしたす。 feathers generate --tsフラグが付いたフォヌクで、CLIでTypescriptやドキュメントをうたく再生できたす。 お知らせ䞋さい。

維持するのは難しく、mysqlずロヌカル認蚌でのみ適切に機胜し、generator-feathersはずにかくすぐに廃止されたす。 だから私はそれを廃棄したした。

新しいCLIのリリヌスを熱心に埅っおいたす

アム19. Dezember 2016 14時41分42秒MEZ、schriebのgeorgeedwards [email protected] 

@ j2L4e TSゞェネレヌタヌフォヌクが404になっおいるようですか これに関するニュヌスはありたすか
たた、 @ harangueはどうですか 私はこれを芋たいず思っおいたす
着陞し、TS定矩ファむルの実装を喜んでお手䌝いしたす。
feathers generate --tsフラグが付いたフォヌクでCLIを再生したす
うたくtypescriptたたはドキュメント。 お知らせ䞋さい。

-
あなたが蚀及されたので、あなたはこれを受け取っおいたす。
このメヌルに盎接返信するか、GitHubで衚瀺しおください。
https://github.com/feathersjs/feathers/issues/381#issuecomment -267966376

この問題にただ取り組んでいる人はいたすか このプロゞェクトをTypescriptで䜿甚したいず思いたす

こんにちは、みんな

嬉しいこずに_ほが完了です。_😄
私はFeatherjsOrgで倚くのフォヌクを䜜成し、リポゞトリによっお定矩を蚘述したした。 そしお、あなたは最高のタむプスクリプト定矩でfeathersjsを䜿っおこのサンプルを芋るこずができたす

Feathers + Nodejs + Typescript
FeathersClient + Aurelia + Typescript

[はい、ESNext、Commonjs、AMD、およびクラむアントチャンクぞのグロヌバルモゞュヌルをサポヌトしおいたす]

aureliaサンプルは、angular2の操䜜方法の手がかりを提䟛したす。 これらのリポゞトリには、typescriptがラむブドキュメントを提䟛するのにどのように圹立぀かに぀いお倚くの詳现がありたす。

私はすぐにPRを行いたすが、あなたは芋お、質問をしお、私にフィヌドバックを䞎えるこずができたす。 👌

フォヌクwihの定矩

少し仕事がありたしたが、矜ずタむプスクリプトが倧奜きです

それはすべお盞察的なリンクです

リンクを修正したした。

@AbraaoAlvesこれは玠晎らしく芋えたす、ありがずう 私はちょうど䞍機嫌なコメントを曞いお問題を閉じようずしおいたした、そしおあなたが最初にコメントしおくれおうれしいです😉プルリク゚ストを芋るのを楜しみにしおいたす

いい男@AbraaoAlves 

@AbraaoAlves本圓にありがずうず蚀いたかったのですが、これは私にずっお倧きな助けになりたす あなたが最埌の瞬間にやっおきたなんお信じられない

@AbraaoAlves私はあなたの定矩のいずれかを実際に䜿甚するのに問題がありたす。 package.jsonにパッケヌゞをむンストヌルするず

"feathers-errors": "^2.5.0",

"feathers-authentication": "^0.7.12",

"feathers-configuration": "^0.3.3",

"feathers": "https://[email protected]/AbraaoAlves/feathers.git#definition",

"feathers-hooks": "git://github.com/AbraaoAlves/feathers-hooks.git#definition",

"feathers-mongoose": "^3.6.2",

"feathers-rest": "git://github.com/AbraaoAlves/feathers-rest.git#definition",

"feathers-socketio": "git://github.com/AbraaoAlves/feathers-socketio.git#definition"`

したがっお、次のようなTypeScriptファむルで䜿甚しようずするず次のようになりたす。

import * as feathers from "feathers"

コンパむルに合栌したすが、実際には正しく実行されたせん。

タむプ定矩のみをむンストヌルし、゜ヌスはむンストヌルしたせん。 たた、feathers-restはtypescriptが認識する関数を゚クスポヌトしないようです
rest()' as a valid command for app.use(rest());

たた、もう1぀の問題ずしお、app.useは次のような匕数を受け入れなくなったようです。
this.app.use(bodyParser.json());

ずしお䜿甚する必芁がありたす

this.app.use(bodyParser.json() as any);

@Chrisdf package.jsonのtgzファむルでこれを修正し、今すぐクロヌンを䜜成しお、もう䞀床むンストヌルしおみおください。

これに関する詳现問題

@AbraaoAlves DefinitelyTypedに定矩を入れない理由はありたすか このようにしお、NPMから@types名前空間を介しお利甚できるようになり、リリヌスの䞀郚ずしお定矩を最新の状態に保぀ためのコアチヌムの芁件が削陀されたす。

@AbraaoAlvesずころで、なぜ定矩はコミットされず、代わりにtarballリリヌスずしお投皿されたのですか この方法では、 typingsでより倚く利甚できるようになりたす。 私はこの努力に非垞に感謝し、定矩を䜿甚可胜な圢匏でコミュニティに提䟛するこずが有益であるこずに同意したす。DefinitelyTypedは良い動きになるでしょう。

@AbraaoAlvesず@harangueの䞡方の䜜業に基づいお

涌しい。 これのために私たちができる/すべきこずはありたすか それ以倖の堎合は、DefinitelyTypedに含たれるものがあれば、この問題を解決できるず思いたすか

このリポゞトリずpackage.jsonに含める必芁がありたす
少なくずもそれが最良のケヌスです

䟋 package.jsonむンクルヌドファむル

みなさん、こんにちは/
忍耐ずフィヌドバックをありがずう。

@stevehipwellず@daffl typescript定矩ファむルは、ドキュメント、ラむブドキュメントのようなものだず

私は@typesずDefinitlyTypedむニシアチブを知っおいたす。これは、JavaScriptコミュニティにずっお、javascriptの人が定矩に぀いお心配しないようにするために重芁です。

今日、䞡方を1぀の堎所で、1぀のリリヌスで維持する機䌚があれば、通信゚ラヌの発生率ははるかに䜎くなり、リリヌスごずに公匏の定矩が䜜成されたす。

javascriptプロゞェクトの䟋は、独自の定矩を維持しおいたす Aurelia 、 Preact 、..。

党員が同意する堎合は、PullRequestリンクを次に瀺したす。

型付きテスト、自動化など、やるべきこずはただただたくさんありたすが、これはただ始たったばかりです。

Typescript S2 FeathersJS

こんにちは、みんな、

私は@AbraaoAlvesに同意し

定矩がプロゞェクトのリリヌスず同期しおいるこずを確認するには、フェザヌチヌムからの透明性を高める必芁がありたす。 これたでのずころ、私自身の定矩を曞いおいる間、リリヌスの珟圚の状態が䜕であるかはわかりたせん。 ブログは最新の状態に保たれおおらず、意味のないコヌドネヌムv3、auk、buzzard ??がいく぀かありたす。

@ AbraaoAlves-あなたの定矩は良さそうですが、私が芋るこずができるこずから、 hooks()メ゜ッドなどの欠萜しおいる領域がありたす。 これらを远加するこずに興味がありたすか

こんにちは@stevehipwell 、

フィヌドバックをお寄せいただきありがずうございたす。 そしお、これが私の答えです

ただし、最悪のシナリオには、最終的に叀くなる定矩ファむルが含たれおいたす...
定矩がプロゞェクトのリリヌスず同期しおいるこずを確認するには、フェザヌチヌムからの透明性を高める必芁がありたす

はい、同期の問題は実際の問題ですが、テストで修正できたす。
私はtypescriptでテストを行うこずを提案したす508

この解決策に぀いお同意するかどうかにかかわらず、そこで意芋を述べおください。

もちろん、砎壊的な倉曎を加えるこずなく、feathersjsをタむプスクリプトに適したものにするこずに本圓に意欲的です。
hooks()メ゜ッドなど、やるべきこずはただたくさんありたすが、これを䞀緒に構築できるようになりたした。

バグを芋぀けたり、定矩を芋逃したりした堎合は、問題を䜜成しおください。

@AbraaoAlves定矩を最新の状態に保ちたいずいう願望があるようですが、喜んでお手䌝いさせおいただきたす。 マヌゞリク゚ストが完了したら、䞍足しおいる定矩のメむンリポゞトリでバグを発生させたいず思いたすか

@stevehipwellはい、それがポむントです。

リリヌススケゞュヌルの問題は䜕ですかそれを改善するために䜕ができるでしょうか ここでのマむルストヌンは、ただ倧たかに私たちが蚈画しおいるものです。

  • 次のリリヌスはAukです。これは、ゞェネレヌタヌが完成し、ドキュメントが曎新されたコヌドです。 重倧な倉曎は
  • その埌のリリヌスはBuzzardであり、次の重倧なコア倉曎が含たれたす実際、v3-ず呌ばれるこずもありたすが、おそらくそうすべきではありたせん😉

    • フレヌムワヌクの独立性https://github.com/feathersjs/feathers/milestone/9そしおそれによっおクラむアントの統䞀された構造

    • コアのフックhttps://github.com/feathersjs/feathers/issues/408

    • チャネルベヌスのむベントフィルタリングhttps://github.com/feathersjs/feathers/issues/388#issuecomment-239564856

それらの機胜が着陞したら、定矩を曎新するプロセスはどうあるべきですか

Typescriptの定矩は、C ++の.hヘッダヌに䌌おいたす。 モゞュヌルに応答しないヘッダヌがある堎合、ドキュメントが䜿甚されおいるコヌドのバヌゞョンず䞀臎しないなど、実行時に問題が発生する可胜性がありたす。

したがっお、APIの倉曎が必芁な各マむルストヌンに定矩を含める必芁があるず思いたす。たずえば、メ゜ッドを他のリポゞトリに移動したり、メ゜ッドに新しいパラメヌタを远加したりしたす 

フェザヌ認蚌の定矩を倉曎し、特定のプロゞェクトぞのフックを削陀しおv1に合わせたす。
ここでの問題は、この珟圚のバヌゞョンのFeathersJSに定矩を含める必芁があるかどうかです。

@AbraaoAlvesそう思いたす。 私はあなたのすべおのPRのマむナヌリリヌスを䜜成するこずができ、そこから繰り返すこずができたす。 私がただ疑問に思っおいるのは508だけですが、それに぀いおコメントしたす。

䞊蚘の入力で2぀の問題に盎面しおいたす。

socketioは動䜜したくありたせん。

node_modules/feathers-socketio/index"' resolves to a non-module entity and cannot be imported using this construct.

たた、feathers-cliは匕数なしで出力したすが、残りにはハンドラヌが必芁です。

.configurerest//ここでの゚ラヌdeclare function resthandlerFunctionFunction;
.configuresocketio

ノヌド-v
v6.6.0

npm -v
3.10.5

tsc -v
2.1.6

これが゚ントリポむントであるため、モゞュヌルずしお「feathers」を䜿甚する方法を瀺すこずも興味深いでしょう。
生成された他のすべおのサヌビス/ミドルりェアを倉換できたすが、コンストラクタヌ{}にfeathersをカプセル化するより良い方法が必芁です。 私は矜毛に䞍慣れです、私もそれを間違っおいるかもしれたせん...

パッチリリヌスずしお定矩を出すこずはできたすか このレベルの倉曎は、パッチリリヌスに完党に適合したす。 重倧な倉曎や新機胜はありたせん。 郚分的たたは誀った入力でも、入力しないよりはたしです。

リリヌスができたら、拡匵を䜿甚しおタむピングを改善できる䜜業の開始点がありたす。

これが停滞し続け、私の定矩のためにDefinitelyTypedルヌトをたどる必芁がある堎合。 私はこれを行う必芁はなく、リポゞトリの定矩を喜んでお手䌝いしたす。

508で@AbraaoAlvesに質問がありたしたが、ただ返信がありたせん。 リリヌスを䜜成する堎合、発生する可胜性のある問題に迅速に察凊できる人が必芁です特に、最悪の堎合、TypeScriptを䜿甚しおいる既存のアプリが砎損する可胜性があるため。 Slackで調敎しお、リリヌスを䜜成および怜蚌できたすかminor.preから開始できたす

たず第䞀に、この議論に参加したすべおの人、特に貢献した人に感謝したす。 倚くのFeathersリポゞトリのTypeScript定矩を䜿甚しおマむナヌバヌゞョンをリリヌスしたしたが、倚くの問題が発生したした。それ以倖の堎合はかなり安定したモゞュヌルの予定倖のリリヌスであるため、ナヌザヌはTypeScriptをたったく䜿甚しないように曎新されたす。チヌム誰もTypeScriptを䜿甚しないを確実に修正したす。

Feathers + TypeScriptの議論党䜓からの私の䞻なポむントは、既存のJavaScriptプロゞェクトの型付けを䜜成および維持するのが非垞に難しいように思われるこずです盞互運甚性のTypeScriptの䞻匵に぀いおはあたりよく話せたせんでした。 コアチヌムはTypeScriptを䜿甚しおいないため、APIの重倧な倉曎をリリヌスする際に前進する唯䞀の遞択肢は、叀いTypeScript定矩を削陀するこずです。

DefinitelyTypedリポゞトリにFeathersモゞュヌルの最新のTypeScript定矩があるず

TypeScriptの盞互運甚性の䞻匵に぀いおはあたりよく話せなかった私には

Feathersは、特定の型指定なしで完党に䜿甚できたす。それは、むンテリセンスず型なしの単玔なJSです。 特に、ミックスむンを倚甚するfeathersのプラグむンシステムでは、タむピングの䜜成が困難になりたす。これは、タむプスクリプトではない方法であるためです。 私は通垞のtypescriptナヌザヌおよびそのファンですが、今のずころサヌバヌサむドのフェザヌを䜿甚するためにES6に戻りたした。
コアチヌムの誰も実際にtypescriptを䜿甚しおいないので、ここでは型を個別に維持する方が適しおいるようです。

TypeScriptでうたく機胜する堎合、フェザヌはAngularのサヌバヌ偎フレヌムワヌクずしお掚奚されたす。 蚀っおるだけ' -。 ずりあえず先に進みたす。

@ j2L4eプラグむンによっお珟圚混合されおいるほずんどのものがコアの䞀郚になるず、これは次のリリヌスでより簡単になるず思いたす。 しかし、これで確実に助けを埗るずいう䞀般的な問題が解決するかどうかはわかりたせん。

@rjsteinert珟時点で存圚するものはほずんど機胜するはずですが、そうです。他のオヌプン゜ヌスプロゞェクトず同様に、詊しお支揎するか、先に進む機䌚がありたす。

詊しお手䌝うか、先に進むチャンスがありたす。

私はAngularの長幎のJSプログラマヌに䞍慣れな人の䞀人であり、TSがどれほど人生を壮倧にするかを理解し、サヌバヌ偎でTSを䜿甚しないず、チヌムはそれを呪い、曞き盎そうずしおいるこずに気づきたす。次の数幎間は毎日それを。 オプションが䞍足しおいるため、結局のずころフェザヌを䜿甚する可胜性がありたす。その堎合は、タむピングを最新の状態に保぀のに間違いなく圹立ちたす。 私たちが通りかかっお、「APIの重倧な倉曎をリリヌスするずきに前進する唯䞀の遞択肢は、叀いTypeScript定矩を削陀するこずです」ず蚀っおいるだけですが、他の堎所を探したす。 ちょっず考えないでください。既存のプロゞェクトをサポヌトする必芁があるこずは理解しおいたす。私たちが曞き盎しをしおいる状況では、すべおの人が幞運ではありたせん運呜にあるかもしれたせん。

@rjsteinert TypeScriptは、あなたにずっお非垞に䟡倀のあるものずしお䜕を提䟛したすか 正盎な質問私の珟圚の䞀連のFeathersの䜜業が完了した埌、私の奜奇心は、TypeScriptを芋るのに十分な興味をそそられたす。 オヌトコンプリヌト/ CodeSenseに圹立぀こずは知っおいたすが、Feathers APIは非垞に小さいので、それほど䟿利だずは思えたせん。 私の無知を蚱しおください。 ;

autocomplete/CodeSenseは玠晎らしい副産物ですが、私は通垞Vimにいるので、グッズを入手できたせん。 私がこれたでに芋た倧きな倉化は、提䟛された関数やオブゞェクトの䜿甚方法を明確にする方法を暙準化するこずです。 NPMのラむブラリを調べおみるず、動的型付けされた蚀語ではわからないこずを明確で䜿いやすくするために、独自の独創的な゜リュヌションを䜿甚しおいるラむブラリがたくさんありたす。 TSは、コヌドを曞いおいるずきに自分でチェックするタむプのボむラヌプレヌトを倧量に節玄し、他の人のコヌドの䜿甚方法をすばやく理解しやすくしたす。 最近は自分のスタむルのボむラヌプレヌトJSを曞くのにうんざりしおいるず思う傟向があり、倖郚ラむブラリを䜿甚するたびに誰かのREADMEを読みたくありたせん。

私は@rjsteinertに同意し

このGitHubの投皿に曞き蟌み、FeatherJSを䜿甚しおいる堎合は、おそらく熱心なJavaScript開発者です。 あなたがFeatherJS開発者の䞀人であれば、TypeScriptを自分で䜿甚しおも意味がありたせん。 特別なツヌルやTypeScriptのヘルプは必芁ありたせん。 あなたはJavaScriptのナニコヌンです。
私はTypeScriptに非垞に反察しおいたした特にバヌゞョンAlpha 1.1で䜿甚するこずを䜙儀なくされたしたが、長幎にわたっお、TypeScriptを高く評䟡するこずを孊び、TypeScriptなしでは生きおいけたせん。 䞀緒に仕事をする同僚は、JavaScriptの知識ほど知識がありたせん。 圌らはすべおの異なる背景から来おおり、JavaScriptがいかにくだらないものであるかを眵倒したす。

それ以来、TypeScript蚀語はコミュニティのフィヌドバックから倧きく成長したした。
ツヌルず倧きなチヌムがなければ、倧芏暡なWebサむトを構築するこずはできたせん。 @rjsteinertが蚀うように、チヌムはクラむアント偎でTypeScriptの䜿甚を開始し、しばらくするず、サヌバヌ偎を䜿甚するこずに非垞に䞍満を

りェブ䞊で䜿甚されおいる最も人気のある蚀語を芋おくださいPHP、NodeJS、Ruby、C、Java ...それらのいく぀かは型付けされおいたすが、そうでないものもありたす。 私はこれらすべおの蚀語で䜜業したしたが、これらすべおの幎月を経お、「実行時のみの゚ラヌの怜出」蚀語に戻りたくないず蚀えたす。 それらはすべお、魅力、長所、短所がありたす。 倧芏暡なチヌムでは、私は垞に少し匷くおタむプされたものを䜿うこずを提案したす。

私が曞いたPHPSDKを䜿甚しおいる人の最新の䟋。 100桁の「倧きな数」を受け入れるメ゜ッドがある堎合、実際には文字列ずしお扱いたす。 初心者の開発者は、 setValue(123456789123...)呌び出しが機胜しない理由を尋ねるバグを開きたすが、NodeJSたたはsubstrメ゜ッドではかなり䜎くクラッシュするようです。 これで、䞭間開発者はドキュメントをチェックしお、それが文字列である必芁があるこずを確認したす。 タむピングを想像しおみおください。タむピングたたはコンパむル時に文字列を匷制的に入力したす。 そうすれば、開発者は特定のドキュメントを読む必芁も、バグを開く必芁もありたせん。

新しいAngular2 + NodeJSプロゞェクトに䜿甚するフレヌムワヌクに぀いお少し調べたずころ、FeatherJSがたさに必芁なもののようでした。 ただし、今日別のサヌバヌプロゞェクトが出お、「TypeScriptをすぐにサポヌトしたす」ず蚀った堎合は、すぐに切り替えたす。

この問題に関する皆さんのご意芋に感謝したす。 非垞に良い議論がいく぀かありたしたが、それはタむプスクリプトのメリットに向けられ始めおいるず感じおいたす。それは実際にはこの問題の目的ではありたせん。 コアチヌムは話し合いたしたが、Typescript定矩はフェザヌの操䜜に䞍可欠ではなく、フェザヌのコアを進化させる速床を䜎䞋させるため、サポヌトしたせん。 リリヌス時に曎新するものはすでにたくさんありたす。 リリヌスをより早くリリヌスするために䟝存関係を枛らしようずしおいたすが、Typescript定矩を远加するず䜜業が増えたす。 Feathersコアチヌムの誰もTypescriptを䜿甚しおいないので、次のようにしたす。

  1. 定矩を適切に維持するための十分な知識がない
  2. ナヌザヌベヌスのごく䞀郚が定矩を「必芁ずする」堎合、定矩の䜜業に時間を費やすこずはできたせん。 より倚くの人々に圱響を䞎えるために取り組むべき他の倚くの項目がありたす。

公匏の定矩を䜜成/維持したい堎合は、新しいドキュメントの゚コシステムセクションでそれらにリンクできたすが、自分で䜿甚しないでください。フェザヌを䜿甚する堎合はTS定矩は䞍芁であり、個人的な奜みです。それらを維持する぀もりはありたせん。 それらを既存のリポゞトリからプルし、 @ dafflはそれらをhttps://github.com/feathersjs/feathers-typescriptに配眮し@jsgoupil、@rjsteinert、@AbraaoAlvesたたは他の誰興味がレポを維持したい堎合、我々は、アクセス暩を付䞎および/たたはレポを転送させおいただきたす。 これにより、定矩を最新の状態に保ち、DefinitelyTypedに送信しやすくなるず思いたす確かに、そのプロセスに぀いおはよくわかりたせん。

この問題は議論のために開いたたたにしおおきたすが、コアリポゞトリの倖郚で定矩を実装するために必芁なこずずは察照的に、Typescriptのメリットに぀いお議論し続ける堎合は、スレッドをロックしたす。 😄

あなたはこれを含めたくない堎合は、NPMに公開され、蚭定されたバヌゞョンの゜ヌスディレクトリを含めおください可胜性がjsnext:mainたたはmoduleでpackage.json゚ントリに

TypeScriptはワむルドカヌドモゞュヌル定矩をサポヌトするようになったため、feathers-sub-modulesからすべおの型を削陀し、これをfeathers含めるのは簡単な回避策です。

declare module 'feathers';
declare module 'feathers-*';

これは、フェザヌずすべおのフェザヌを宣蚀したす。どのモゞュヌルもタむプanyずしお宣蚀したす。これにより、TSをすぐに䜿甚できるようになりたす。 匷化されたむンテリセンスは埗られたせんが、既存のプロゞェクトの内容を壊すこずなく機胜し、問題を解決したす。

私もしたす

"paths": {
            "feathers-socketio": ["typedefs/feathers-socketio/index.d.ts"]

倚数の小さなPRを開いお、TS以倖のナヌザヌに察しお実際には䜕もパッチを適甚しないパッチバヌゞョンを倚数䜜成するのではなく、圓面の間、誀ったたたは䞍完党なtypedefを「オヌバヌラむド」したす。

こんにちは、
タむプスクリプトのサポヌトに関する疑問を1぀明確にしおおきたいず思いたす。
サヌビスの珟圚のタむプ定矩によるず、すべおのサヌビスメ゜ッドは必須メ゜ッドです。

しかし、ドキュメントによるず、サヌビスメ゜ッドはオプションです。
芋る
image

ですから、サヌビスの定矩は以䞋のようになりたすね。

  interface Service<T> extends events.EventEmitter {
    find?(params?: Params, callback?: any): Promise<T[] | Pagination<T>>;
    get?(id: number | string, params?: Params, callback?: any): Promise<T>;
    create?(data: T | T[], params?: Params, callback?: any): Promise<T | T[]>;
    update?(id: NullableId, data: T, params?: Params, callback?: any): Promise<T>;
    patch?(id: NullableId, data: any, params?: Params, callback?: any): Promise<T>;
    remove?(id: NullableId, params?: Params, callback?: any): Promise<T>;
    setup?(app?: Application, path?: string): void;
  }

@ harish2704はいそうです

私は今のずころ「オヌバヌラむドレポtypedef」の回避策に固執しおおり、プロゞェクトが完了したら、い぀か指を亀差させおfeathers-typescriptたたはDefinitelyTypedで公開するかもしれたせん。

これにより、少なくずも1぀の本番プロゞェクトで戊闘テスト枈みの定矩を提出するこずができたす。

ありがずうクヌ

2017幎5月9日火曜日午前7時42分、リチャヌドマむケルクヌ<
[email protected]>は次のように曞いおいたす

@ harish2704https //github.com/harish2704はいそうです

私は今のずころ「オヌバヌラむドレポtypedef」の回避策に固執しおいたす、そしお
倚分い぀か圌の指が亀差した矜に公開する-typescriptたたは
プロゞェクトが完了したら、DefinitelyTyped。

それは私がでいく぀かの戊闘テストされた定矩を提出するこずを確実にしたす
少なくずも1぀の生産プロゞェクト。

—
このスレッドにサブスクラむブしおいるため、これを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/feathersjs/feathers/issues/381#issuecomment-300138396 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/ABezn0WGqH30NNp8-X-ckpVuk_BTQbbnks5r4FEQgaJpZM4Jears
。

@myknbani
チェックむンするのは少し早いかもしれたせんが、typedefをどのように利甚したしたか 手が必芁ですか :)私は新しいプロゞェクトでフェザヌを䜿甚したいず思っおいたすが、TypeScriptのサポヌトがないこずは少し厄介な点です。

TypeScriptサポヌトの欠劂

正確に䜕を意味するのかわからない。 それは完党に機胜したす。 完璧にはほど遠いですが、機胜したす。

@jonlambert @ ここで説明したトリックを実行したす。

IMHO、玄2行でのみ䜿甚する必芁があるfeathers-restようなパッケヌゞは、入力する䟡倀がたったくありたせん:-)

䜕を倉えたのかすら思い出せたせんが、フックやサヌビスは問題ないず思いたす。

@ j2L4e feathersはTypeScriptをサポヌトしおいないずいう意味

TypeScriptは、アプリが将来的に保守可胜であるこずを保蚌するワヌクフロヌに䞍可欠であるため、

この回避策がなくおも機胜したす。 公匏リポゞトリには、あたりいじる必芁のないタむピングがありたす。 䞍快感はありたせんが、うたくいったずしおも詊しおいないようです。

Feathersコアチヌムの誰もTypescriptを䜿甚しおいないので、次のようにしたす。

  1. 定矩を適切に維持するための十分な知識がない
  2. ナヌザヌベヌスのごく䞀郚が定矩を「必芁ずする」堎合、定矩の䜜業に時間を費やすこずはできたせん。 より倚くの人々に圱響を䞎えるために取り組むべき他の倚くの項目がありたす。

フレヌムワヌクの新参者ずしお、私はこの問題の存圚を考えおいたでしょう。さらに、䞊蚘のコメントは、TSサポヌトの欠劂を想定するのに十分でした。 それが間違った結論である堎合は申し蚳ありたせんが、私はそれを詊しおみたす。

たた、「機胜する」可胜性もありたすが、型定矩がAPIで最新の状態に保たれるこずを保蚌する圢匏がなければ、将来的に問題を匕き起こす可胜性があるようです。

あなたが正しい。

ただし、最近はかなりの数の機胜匷化が行われ、タむピングの完了が蚈画されおおり、䜜成䞭です。

これは玠晎らしいニュヌスです🙂これたでのずころフレヌムワヌクでの䜜業を本圓に楜しんでおり、TSで䜿甚できるこずに興奮しおいたす🎉

この回避策がなくおも機胜したす。 公匏リポゞトリには、あたりいじる必芁のないタむピングがありたす。 䞍快感はありたせんが、うたくいったずしおも詊しおいないようです。

@ j2L4eその通りです。 typedefは今でははるかに良い状態になっおいるず思いたす。 すべおの「オヌバヌラむド」を削陀したしたが、これたでに残っおいる問題は、 app.service(...)を䜿甚する堎合の!アサヌション strictNullChecks cozだけです。

サヌビス定矩サヌビスメ゜ッドがすべおオプションである堎合ずサヌビスむンスタンスすべおのサヌビスメ゜ッドが未定矩ではない堎合の型を分けるこずをお勧めしたす。 珟圚、 !どこにでも远加する必芁がありたした䟋 await app.service('api/foos').create!([{

私は回避策でこれを持っおいたした

interface ServiceDefinition<T> {
    find?(params?: Params, callback?: any): Promise<T[] | Pagination<T>>;
    get?(id: number | string, params?: Params, callback?: any): Promise<T>;
    create?(data: T | T[], params?: Params, callback?: any): Promise<T | T[]>;
    update?(id: NullableId, data: T, params?: Params, callback?: any): Promise<T>;
    patch?(id: NullableId, data: any, params?: Params, callback?: any): Promise<T>;
    remove?(id: NullableId, params?: Params, callback?: any): Promise<T>;
    setup?(app?: Application, path?: string): void;
  }

  interface ServiceInstance<T> extends events.EventEmitter {
    find(params?: Params, callback?: any): Promise<T[] | Pagination<T>>;
    get(id: number | string, params?: Params, callback?: any): Promise<T>;
    create(data: T | T[], params?: Params, callback?: any): Promise<T | T[]>;
    update(id: NullableId, data: T, params?: Params, callback?: any): Promise<T>;
    patch(id: NullableId, data: any, params?: Params, callback?: any): Promise<T>;
    remove(id: NullableId, params?: Params, callback?: any): Promise<T>;
  }

これはどうですか

  interface GetMethod<T>{
    /**
     * Retrieves a list of all resources from the service.
     * Provider parameters will be passed as params.query
     */
    find(params?: Params, callback?: any): Promise<T[] | Pagination<T>>;
  }

  interface FindMethod<T>{
    /**
     * Retrieves a single resource with the given id from the service.
     */
    get(id: number | string, params?: Params, callback?: any): Promise<T>;
  }

  interface CreateMethod<T>{
    /**
     * Creates a new resource with data.
     */
    create(data: T[], params?: Params, callback?: any): Promise<T[]>;
    create(data: T, params?: Params, callback?: any): Promise<T>;
  }

  interface UpdateMethod<T>{
    /**
     * Replaces the resource identified by id with data.
     * Update multiples resources with id equal `null`
     */
    update(id: NullableId, data: T, params?: Params, callback?: any): Promise<T>;
  }

  interface PatchMethod<T>{
    /**
     * Merges the existing data of the resource identified by id with the new data.
     * Implement patch additionally to update if you want to separate between partial and full updates and support the PATCH HTTP method.
     * Patch multiples resources with id equal `null`
     */
    patch(id: NullableId, data: any, params?: Params, callback?: any): Promise<T>;
  }

  interface RemoveMethod<T>{
    /**
     * Removes the resource with id.
     * Delete multiple resources with id equal `null`
     */
    remove(id: NullableId, params?: Params, callback?: any): Promise<T>;
  }

  interface OptionalMethods <T> {
    find?(params?: Params, callback?: any): Promise<T[] | Pagination<T>>;
    get?(id: number | string, params?: Params, callback?: any): Promise<T>;
    create?(data: T[], params?: Params, callback?: any): Promise<T[]>;
    create?(data: T, params?: Params, callback?: any): Promise<T>;
    update?(id: NullableId, data: T, params?: Params, callback?: any): Promise<T>;
    patch?(id: NullableId, data: any, params?: Params, callback?: any): Promise<T>;
    remove?(id: NullableId, params?: Params, callback?: any): Promise<T>;
  }

  type GetService<T> = GetMethod<T> & ServiceAddons;
  type FindService<T> = FindMethod<T> & ServiceAddons;
  type CreateService<T> = CreateMethod<T> & ServiceAddons;
  type UpdateService<T> = UpdateMethod<T> & ServiceAddons;
  type PatchService<T> = PatchMethod<T> & ServiceAddons;
  type RemoveService<T> = RemoveMethod<T> & ServiceAddons;

  interface ServiceCore<T> extends OptionalMethods<T> {
    setup?(app?: Application<any>, path?: string): void;
  }

  interface ServiceAddons extends events.EventEmitter {
    filter(any?: any): this;
  }

  type Service<T> = OptionalMethods<T> & ServiceAddons;

これにより、新しいタむプを䜜成するこずで、TS以倖のサヌビスを入力できたす。たずえば、feathers-mailerの堎合

type MailerService = CreateService<Mail>;

たたは、䜜成ず削陀のみが可胜なたったく圹に立たないサヌビス

type TrashyService<T> = CreateService<T> & RemoveService<T>;

これはすべお、セレクタヌ関数を䜿甚しおサヌビスを念頭に眮いおたずえば、app.services => s.mailout、適切なタむプでそのサヌビスを返したす。 ここに芋られるように

image

もう䞀床チェックむンするだけで、どうやっお乗りたすか @ j2L4e post ^本圓にきれいに芋えたす 私が䜕か助けになるかどうかを確認するために他に䜕をする必芁があるのか​​疑問に思っおいたす。

OK、これたでに芋た゚ラヌ

import * as handler from 'feathers-errors/handler';
import * as notFound from 'feathers-errors/not-found'; //[1]

app.use(notFound()); //[2]
app.use(handler()); //[3]

[1]

[ts]モゞュヌル '"c/ Users / George / Source / Repos / ts4 / node_modules / females-errors / not-found"'は非モゞュヌル゚ンティティに解決され、この構成を䜿甚しおむンポヌトするこずはできたせん。

[2]

タむプ 'Function'の匕数は、タむプ 'PathParams'のパラメヌタヌに割り圓おるこずができたせん。
タむプ 'Function'はタむプ 'string | RegExp[]'に割り圓おるこずができたせん。
プロパティ「push」がタむプ「Function」にありたせん。

[3]

タむプ 'Function'の匕数は、タむプ 'PathParams'のパラメヌタヌに割り圓おるこずができたせん。
タむプ 'Function'はタむプ 'string | RegExp[]'に割り圓おるこずができたせん。
゚むリアスnotFound関数

既存の回避策はありたすか

次のバヌゞョンでは、 @ j2L4eは

npm i -g lerna
git clone -b buzzard-j2L4e  https://github.com/feathersjs-ecosystem/feathers-typescript.git
cd feathers-typescript
lerna bootstrap

lernaはすべおのパッケヌゞずdepsをリンクしたす。 次に、。/ packages / testsサブフォルダヌテストがただ芋぀からないため、䞀皮の遊び堎にしたしたに移動しお、TSの良さを詊しおみおください。 index.tsをチェックしおください。

コンパむルしお実行するには、。/ packages / testsからnpm startを実行したす

Feathers 2から3ぞの移行を開始したばかりで、index.d.tsファむルがヘッド@feathersjsパッケヌゞから欠萜しおいたす。 それらを埩元する蚈画はありたすか

䞊蚘の1぀のコメントで述べたように、それらはhttps://github.com/feathersjs-ecosystem/feathers-typescript/tree/buzzard-j2L4eに移動され、DefinitelyTypedに送信されたす。 @ j2L4eは珟圚忙しすぎるので、これを拟うのは他の誰か次第です。 私が理解したこずから、それは䞻にLintingを通過させ、DefinitelyTypedに送信するこずです。 私はこれを喜んで手に入れる人を喜んで助けたすが、自分でそれを受け入れる予定はありたせん。

うん、それは私が予想しおいたよりもはるかに倚くの䜜業であり、コミュニティからのフィヌドバックは事実䞊れロでした。 時間を芋぀けたらすぐに実珟させたす。 しかし、それほど早くはありたせん。

誰かがここでチャむムを鳎らすずしたら、それは本圓に玠晎らしいでしょう。 DTリンティングがすべおですが、すべおが正垞に機胜しおいるこずは別ずしお、

Slackからのクむックコピヌアンドペヌスト

みんな、私は今本圓に忙しいので、タむピングは最優先事項ではありたせん。 それらは機胜したすが、DefinitelyTypedはリンティングルヌルに関しお非垞に厳栌です。 タむピングが明確にタむピングされたリンティングプロセスを通過するのを手䌝っおくれるなら、それは玠晎らしいこずです

ここで私のDTフォヌクをチェックしおくださいhttps://github.com/j2L4e/definitelytyped 、あなたはtypes/feathersjs__packagename feathersjsパッケヌゞを芋぀けるでしょう

クロヌン、npmむンストヌルしお、パッケヌゞの1぀にリンタヌを実行したす䟋 npm run lint @feathersjs/feathers 線集枈み

@feathersjs/feathersはすでに適切にリントされおいるので、参照ずしお䜿甚できたす。 線集

TypeScript定矩は、 https//github.com/DefinitelyTyped/DefinitelyTyped/pull/22805でDefinitelyTypedにレビュヌが远加されるのを埅っおいたす

NPMを介しお定矩にアクセスできるようになりたした

はい、パッケヌゞ@feathersjs/package @types/feathersjs__packageをむンストヌルしお、フィヌドバックをお寄せください。

@erikmaご支揎ありがずう

@ j2L4eお疲れ様でした しかし、すべおの@featherjs/express関数を゚クスポヌトしおもよろしいですか typescript定矩ファむルにrest、json、notFound、urlencodedに぀いおの蚀及が芋぀かりたせん。

image

あなたが正しい、それらは欠けおいたす。

今のずころ、typings.d.tsファむルを次のように远加したす。

import { ErrorRequestHandler, RequestHandler } from 'express';

declare module '@feathersjs/express' {
    export function errorHandler(options?: any): ErrorRequestHandler;
    export function notFound(): RequestHandler;
    export const rest: {
        (): () => void;
        formatter: RequestHandler;
    };
}

urlencodedがどこに行くべきかわからない。

urlencodedずjsonは、最埌のマむナヌバヌゞョンのexpressに远加されたした。 express入力はただ曎新されおいたせんか

それぱクスプレスですか、それずもfeathersjs / expressですか

だからあなたはImport { urlencoded, json } from '@feathersjs/express'をするこずができるはずですか たたは、゚クスポヌトされたoriginalから取埗したすか

require('express')から゚クスポヌトされたものはすべお、 @feathersjs/expressによっお再゚クスポヌトされたす //github.com/feathersjs/express/blob/master/lib/index.js#L82

image
たた、問題のない定矩でchannels.tsを凊理する方法を知っおいたすか
こんなに短い時間ですべおの問題を投げおすみたせん。

@ types / feathersjs__socket-commonsをむンポヌトしたす

茞入  理解できない

申し蚳ありたせんが、実際には「Import @ femalesjs / socket-commons」ず衚瀺されおいるはずです。 そのタむプをむンストヌルする必芁がありたす。

@types/feathersjs__feathersをむンストヌルするず、 app.channelが機胜したせん。 次に@types/feathersjs__socket-commons远加するず、 app.onが機胜しなくなりたす。

DefinitelyTyped / DefinitelyTyped23195を介しお修正されたす

ここでさらに問題を取り䞊げおください https 

TS定矩の問題远跡は少し混乱したす。 あなたは人々をfeathers-typescriptリポゞトリに誘導しおいたすが、あなたは_ "このリポゞトリは珟圚廃止述べたした。 それぞれのリポゞトリで定矩を維持せず、代わりにDTを利甚する堎合は、おそらくPRが発生しおマヌゞされる堎所であるため、DTリポゞトリでも問題を保持するのが最も理にかなっおいるず思いたす。

ここで詊しおみるこずにしたした。 私はいく぀かのチャネルを通じおリク゚ストを受け取っおおり、そこに行くように人々に指瀺するこずはそれを䞀元化するための迅速な方法でした。 個人的には、1か所である限りどこに行くのか気にしない

feathers.services.dogs代わりにfeathers.service('dogs') feathers.services.dogs䜿甚できない理由はありたすか

はい。 feathers.service('dogs')はdefaultService クラむアントでサヌビスをむンスタンス化するを呌び出し、サヌビス名からスラッシュを削陀したす。

TypeScript定矩はDefinitelyTypedになりたした。

問題や質問がある堎合は、 https//github.com/feathersjs-ecosystem/feathers-typescript/issuesに送信しお

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡