7

SailsJS kullanarak bir arka uç sunucusu geliştiriyorum. Temel olarak tüm model yardım hizmetlerini ve kendi servislerimi global ad alanı içine enjekte ediyor. Bu hizmetler için Intellisense alabildiysem büyük fayda sağlayacaktır.VS Code'da kendi Javascript hizmetlerim için Intellisense almak için Typescript tanımları nasıl kullanılır?

Önce yazarak yazın ve lodash ve node için global tür tanımları yükledim. jsconfig.json ve tsconfig.json dosyalarını oluşturduktan sonra bir çekicilik gibi çalışır.

Sonraki Kendi hizmetlerim için temel bir tanım dosyası oluşturmak istedim.

declare namespace foo { 
    export function bar(); 
} 
declare var baz: { some: number }; 

Bu sadece onlar işe yaramaz eğer ben zaman yazma tanımları boşa harcamayın emin olmak için şu oluyor: Bir index.d.ts İçinde dosya ile typings/globaller bir dizin yarattı . Benim için sürpriz

/// <reference path="globals/psiewakacje/index.d.ts" /> 

, benim proje en çalışmaz:

Sonraki Ben index.d.ts bir referans etiketi ekleyerek typings/index.d.ts yılında dosyası bu dahil Javascript dosyaları. foo. veya baz. yazdıktan sonra, herhangi bir mantıklı Intellisense alamıyorum. Ben aracılığıyla her dosyada bu hizmetleri ithal zaman

 

sadece Intellisense desteği ben almak başardı:

import * as InternalParser from '../services/InternalParser'; 

veya

var InternalParser = require('../services/InternalParser'); 

ama bu kullanmaz Typescript'in tanım dosyaları ve sadece bana verilen özellikleri verir. Genel olarak istenen bir sonuç değil.

 

Ben düzgün çalışması için nasıl merak ediyorum. Düğümün ve lodash'ın tip tanım dosyalarına baktım ve aynı şeyi yapıyorlar: belirli bir türle bir değişken/ad alanı bildir. Ancak, tanımları Javascript'te çalışıyor ve benim değil. Nasıl doğru alınır?

cevap

0

typings/index.d.ts için başvuru eklemeniz gerekmez. En kolayı, beyanlarınızı projenizin herhangi bir yerinde küresel bir deklarasyon dosyasına eklemektir.

Ayrıca, var ve namespace kullanmak yerine, yalnızca interface'u kullanın.

Ör.senin dizininin kökü, kolayca ben düzenleyici (VSCode) dosyası için yanlış dizinde arıyordu aynı sorunu vardı ve keşfedilen

// index.d.ts 
interface Foo { 
    bar:() => void 
} 

interface Baz { some: number } 
0

ekleyebilir, sorun göreli referans doğru yolu ile çözüldü belirli yol değişecektir, ancak benim örnekte oldu:

/// <reference path="../../typings/index.d.ts" /> 

index.d.ts aşağıdakileri içerir:

/// <reference path="globals/core-js/index.d.ts" /> 
/// <reference path="globals/jasmine/index.d.ts" /> 
/// <reference path="globals/node/index.d.ts" /> 

ve benim dizin/dosya yapısı f olarak görünür ollows:

enter image description here

+0

Benim için sorun özel modülleri typings ile yüklü değil olanlar için IntelliSense almıyor, bu yüzden ne yazık ki bu benim için bir çözüm değildir. Denediğin için teşekkürler! – Voreny

+0

Ah anladı! Yardımcı olabilecek başka bir şeye rastlarsam size haber vereceğim. – Joelster