2017-03-28 24 views
5

मैं टाइपप्रति (संस्करण 2.2.1) VSCode में उपयोग कर रहा हूँ (संस्करण 1.10.2) प्रतिक्रिया और मैं कोशिश कर रहा हूँ के लिए पर दिए गए निर्देशों का उपयोग करके * .android.ts और * .ios.ts रास्तों मैप करने के लिए संकलक पाने के लिए:टाइपप्रति पथ मानचित्रण मेरी मूल निवासी परियोजना प्रतिक्रिया के लिए मूल निवासी * .android.ts और * .ios.ts मॉड्यूल

https://github.com/Microsoft/TypeScript-Handbook/blob/release-2.0/pages/Module%20Resolution.md#path-mapping

उदाहरण के लिए:

import ApplicationTabs from './ApplicationTabs'; 

करने के लिए नक्शे चाहिए 0 निम्नलिखित tsconfig.json सेटिंग्स

{ 
    "compilerOptions": { 
     "paths": { 
      "*": ["*", "*.ios", "*.android"] 
     } 
    } 
} 

लेकिन इसके बजाय संकलक फेंकता साथ

त्रुटि फेंकता है "[ts] नहीं मिल सकता है मॉड्यूल './ApplicationTabs'"

क्या किसी को पता है कि मैं कैसे मिल सकता है * .android.ts और * .ios.ts पथों को सही तरीके से मैप करने के लिए संकलक?

मेरे tsconfig.json है:

{ 
    "compilerOptions": { 
     "target": "es6", 
     "module": "es6", 
     "moduleResolution": "node", 
     "jsx": "react", 
     "outDir": "build", 
     "rootDir": "src", 
     "removeComments": true, 
     "allowSyntheticDefaultImports": true, 
     "noImplicitAny": true, 
     "experimentalDecorators": true, 
     "preserveConstEnums": true, 
     "allowJs": true, 
     "inlineSourceMap": true, 
     "sourceRoot": "src", 
     "baseUrl": ".", 
     "paths": { 
      "*": [ 
       "*", 
       "*.ios", 
       "*.android" 
      ] 
     } 
    }, 
    "filesGlob": [ 
     "typings/**/*.d.ts", 
     "src/**/*.ts", 
     "src/**/*.tsx", 
     "src/**/*.tsx" 
    ], 
    "exclude": [ 
     "index.android.js", 
     "index.ios.js", 
     "build", 
     "node_modules" 
    ], 
    "compileOnSave": false 
} 

धन्यवाद :-)

+0

यदि आपको कोई मिल गया है तो क्या आप अपना समाधान पोस्ट करना चाहते हैं? –

+1

हाय बिजो, मुझे इसका समाधान नहीं मिला। मैंने अभी प्रतिक्रियात्मक मूल सीखना शुरू कर दिया है इसलिए मैंने अभी जावास्क्रिप्ट में लिखने का फैसला किया है। – Francesco

उत्तर

-1

यहाँ सिफारिशें पथ मानचित्रण समर्थन उपयोग करने के लिए, को देखने के https://github.com/Microsoft/TypeScript-Handbook/blob/release-2.0/pages/Module%20Resolution.md#path-mapping

तो अपने tsconfig.json की तरह कुछ को शामिल करना चाहिए है:

{ 
    "compilerOptions": { 
     "paths": { 
      "*": ["*", "*.ios", "*.android"] 
     } 
    } 
} 

यह कंपाइलर whe n को देखने के लिए BigButton को एक आयात को हल:

BigButton.tsx

BigButton.ios.tsx

BigButton.androdid.tsx

+0

ऐसा प्रतीत होता है कि यह https://github.com/Microsoft/TypeScript/issues/8328#issuecomment-219583889 से कॉपी किया गया था। प्रश्नकर्ता पूछताछ का जिक्र कर रहा है, यह केवल पूर्ण आयात के लिए काम करता है, रिश्तेदार नहीं। –

0

ऐसा लगता है कि यहां मुद्दा यह सूचना में चला रहे हैं : https://github.com/Microsoft/TypeScript/issues/8328

इस मुद्दे के अनुसार (और जो मैंने अपनी परियोजनाओं में पाया है) पथ समाधान रिश्तेदार पथों के लिए काम नहीं करता है, जैसा कि आप उपरोक्त कोड में कर रहे हैं। तुम भी प्रकार की जाँच अपने .android और .ios फ़ाइलों के बीच नहीं मिलता है, तो मैं अन्य दृष्टिकोण के अंक में चर्चा की उपयोग कर रहे हैं:

./ApplicationTabs.d.ts

// This file exists for two purposes: 
// 1. Ensure that both ios and android files present identical types to importers. 
// 2. Allow consumers to import the module as if typescript understood react-native suffixes. 
import DefaultIos from './ApplicationTabs.ios'; 
import * as ios from './ApplicationTabs.ios'; 
import DefaultAndroid from './ApplicationTabs.android'; 
import * as android from './ApplicationTabs.android'; 

declare var _test: typeof ios; 
declare var _test: typeof android; 

declare var _testDefault: typeof DefaultIos; 
declare var _testDefault: typeof DefaultAndroid; 

export * from './ApplicationTabs.ios'; 
export default DefaultIos; 
संबंधित मुद्दे