2016-06-05 12 views
30

मैं टाइपप्रति भीतर rx-node उपयोग करने के लिएटाइपस्क्रिप्ट: स्थापित एनपीएम पैकेज के लिए कस्टम टाइपिंग कैसे परिभाषित करें?

import RxNode from 'rx-node'; 

मैं NPM

$ npm install rx-node --save 

मैं प्रकार परिभाषा के लिए खोज का उपयोग कर rx-node स्थापित पसंद है, लेकिन किसी भी परिणाम के बिना

$ typings search rx-node 
No results found for search 

कैसे मैं कस्टम परिभाषित कर सकते हैं स्थापित एनपीएम मॉड्यूल rx-node के लिए परिभाषा टाइप करें? मुझे टाइप परिभाषा फ़ाइल कहां स्टोर करनी चाहिए? टाइपस्क्रिप्ट को कॉन्फ़िगर कैसे करें (tsconfig.json और टाइपिंग.जेसन)?

संपादित करें:Aleksey L. और David Bohunek के लिए धन्यवाद मैं एक rx-node.d.ts कि इस

declare module "rx-node" { 
    import {Observable} from '@reactivex/rxjs'; 
    import {ReadLine} from "readline"; 

    function fromReadLineStream(stream: ReadLine): Observable<string> 
} 

मैं @reactivex/rxjs

npm install --save @reactivex/rxjs 

जब से मैं एक त्रुटि मिली स्थापित की तरह दिखता है परिभाषित करने के लिए हासिल की

node_modules\@reactivex\rxjs\dist\cjs\Observable.d.ts (10,66): Cannot find name 'Promise'. (2304) 

मैंने tsconfig.json से es6 में लक्ष्य बदल दिया।

उत्तर

34

आप के लिए योगदान टाइपिंग.जेसन पर कस्टम परिभाषाएं जोड़ सकते हैं। उदाहरण के लिए निम्नलिखित फ़ोल्डर संरचना:

/typings 
    /custom 
     rx-node.d.ts 
    /global 
     ... 

जहां rx-node.d.ts आपकी कस्टम टाइपिंग फ़ाइल है। उदाहरण के लिए:

declare module RxNode { 
    export interface ... 
} 

फिर एक आदेश

typings install file:typings/custom/rx-node.d.ts --save --global 

या मैन्युअल रूप से स्थापित करें: typings.json में इस typings फाइल करने के लिए संदर्भ जोड़ें:

{ 
    "name": "TestName", 
    "version": false, 
    "globalDependencies": { 
     "rx-node": "file:typings/custom/rx-node.d.ts" 
    } 
} 

और रन typings install

+0

'टाइपिंग इंस्टॉल' प्रतियां 'टाइपिंग/कस्टम/आरएक्स-नोड डी.टी.टी.' को 'टाइपिंग/ग्लोबल्स/आरएक्स-नोड/index.d' पर चलाना। ts'। अगर मैं टाइप परिभाषा बदलता हूं, तो मुझे परिवर्तनों की प्रतिलिपि बनाने के लिए फिर से 'टाइपिंग इंस्टॉल' चलाने की ज़रूरत है। 'Index.d.ts' में मैन्युअल रूप से' rx-node.d.ts' को संदर्भित करने के इस दृष्टिकोण का क्या फायदा है? – maiermic

+1

व्यक्तिगत रूप से मैं ऑटो जेनरेट की गई फ़ाइलों को संपादित नहीं करना पसंद करता हूं (और स्रोत नियंत्रण में अनदेखा नियम जोड़ें)। एक बार टाइपिंग परिभाषित करने के बाद भी वे मूल लाइब्रेरी बदल नहीं होने तक बदल नहीं पाएंगे। और एक बार "आधिकारिक" संस्करण उपलब्ध होने पर इसे आसानी से बदला जा सकता है। –

+0

मुझे लगता है कि यह दृष्टिकोण अब टाइपस्क्रिप्ट 2.x के रूप में बदल गया है, क्योंकि 'टाइपिंग' फ़ोल्डर अनावश्यक है और सभी टाइपिंग node_modules/@ प्रकार/... में npm के माध्यम से स्थापित की जाती हैं? क्या लापता परिभाषाओं के लिए कस्टम टाइपिंग के लिए एक अनुशंसित दृष्टिकोण है? – Squiggle

1

इसे एक नई फ़ाइल बनाएं, जिसे इसे rx-node.d.ts कहा जाता है और सुनिश्चित करें कि इसे सीधे tsconfig.json में सीधे या किसी अन्य फ़ाइल से संदर्भित किया गया है, उदाहरण के लिए typings/index.d.ts। तो फिर तुम कुछ इस तरह के साथ शुरू कर सकते हैं:

///<reference path="rx.d.ts" /> 

declare namespace RxNode { 

    export interface Emitter<T>{ 

    } 

    export function toEventEmitter<T>(observable: Rx.Observable<T>, eventName: string): Emitter<T>; 
} 

यह प्रश्न/उत्तर helpuful हो सकता है: How to write d.ts file from existing .js file?

आप एक अच्छा, उच्च गुणवत्ता typings परिभाषा फ़ाइल बनाते हैं, तो https://github.com/DefinitelyTyped/DefinitelyTyped

+1

ग्रेट, पहले से ही एक [पुल अनुरोध] है (https: // github।कॉम/प्रतिक्रियाशील-एक्सटेंशन/आरएक्स-नोड/पुल/17): डी – maiermic

संबंधित मुद्दे