2014-06-27 59 views
9

Ben typescript için yeni ve iki tip arasında dairesel bir referansı nasıl kurabileceğimi anlamaya çalışıyorum. Referans, tam bir kod referansı, sadece arayüzler, ancak ayrı dosyalarda tanımlanmış arayüzler olmak zorunda değildir. Örneğin, iki arayüze sahip olduğumu varsayalım: Ebeveyn ve Çocuk. Ebeveynler, ebeveynin bir çocuk koleksiyonuna sahip olduğu ve her çocuğun ebeveynine bir referansı olduğu (aşağıda görüldüğü gibi) bağlanır. Bunların ayrı dosyalarda tanımlanabilmesi için ithalatları veya bağımlılıkları nasıl kurarım?TipScript'te Dairesel Tip Referanslar

()
+2

Kişisel olarak bunları aynı dosyaya koyarım çünkü bunlar ayrılmaz şekilde bağlantılıdır ve derleme sırasında silinir. – Fenton

cevap

8

Aşağıdaki iki çözüm.

bir definitions.d.ts dosyası oluşturun

Kullanım referanslar ... o Düğüm JS modülleri ile temiz arayü- sunmaktadır beri ikinci tercih, ama ne yazık benim IDE olarak az benim kadar böyle (henüz) yok sadece, dersleriniz/arayüzleri

/// <reference path="Parent.ts" /> 
/// <reference path="Child.ts" /> 
Parent.ts yılında

ve Child.ts, tek referans gelin için definitions.d.ts dosya referanslarını içerir

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

Kullanım ithalat ...

tsc için --module commonjs bayrak geçmek gerektiren sonra import ne require ve

import Child = require('Child') 

interface Parent { 
    children: Child[] 
} 

export = Parent 

Parent.ts yılında

maruz istediğini export Child.ts içinde

import Parent = require('Parent') 

interface Child { 
    parent: Parent 
} 

export = Child 

Eğer require

DÜZENLEME Eylül 2016

O ES6 tarzı ithalatı kullanmak artık daha iyidir uzatma' ts ını (ve varsayılan ihracatını kaçının) olmadığını, unutmayın:

Parent.ts

import { Child } from './Child' 

export interface Parent { 
    children: Child[] 
} 

Child.ts

import { Parent } from './Parent' 

export interface Child { 
    parent: Parent 
}