2016-11-01 6 views
0

Я определил модуль, как это в target.d.tsМашинопись модуль не найден

declare module "target" { 

    export interface Group { 
     name: string; 
     targets?: Target[]; 
    } 

    export interface Target { 
     device: Device; 
     property: Property; 
     value?: Value; 
    } 

    export interface Value { 
     value: number; 
     id?: number; 
     timestamp?: number; 
    } 

    export interface Property { 
     id: number; 
     name: string; 
     channel: number; 
     type: string; 
    } 

    export interface Device { 
     id: number; 
     name: string; 
     type: string; 
    } 

} 

Теперь я использую определенные интерфейсы в компоненте, как

import {Component, OnInit} from '@angular/core'; 

import {BackendUrl} from '../../../../common/settings'; 
import {contentHeaders} from "../../../../common/headers"; 
import {EventService} from "../../../../service/event.service"; 

import {Input} from "@angular/core/src/metadata/directives"; 
import {Message} from "stompjs"; 
import {Target} from "target"; 

@Component({ 
selector: 'device-switch', 
templateUrl: './switch.component.html' 
}) 
export class SwitchComponent implements OnInit { 

    @Input() 
    public title: string; 

    @Input() 
    public device: any; 

    @Input() 
    public property: any; 

    private checked: boolean; 

    constructor(public authHttp: AuthHttp, private eventService: EventService) { 
     this.checked = false; 
    } 

    ngOnInit() { 
     this.eventService.messages.subscribe(this.on_next); 
    } 

    /** Consume a message from the eventService */ 
    public on_next = (message: Message) => { 

     let data : Target = JSON.parse(message.body); 
     if(data.device.id === this.device.id && data.property.name === this.property.name) { 
      this.checked = (data.value.value > 0); 
     } 

    }; 

} 

Проблема в том, что @Input() переменные device и property - это типы интерфейсов, определенные в модуле target.

Но если я import {Target, Device, Property} from "target"; компилятор выдает ошибку

ERROR in ./src/app/component/view/part/device/switch.component.ts 
Module not found: Error: Can't resolve 'target' in '~/git/xx/frontend/src/app/component/view/part/device' 
@ ./src/app/component/view/part/device/switch.component.ts 16:0-28 
@ ./src/app/component/view/part/group.component.ts 
@ ./src/app/app.module.ts 
@ ./src/main.ts 
@ multi main 

я не знаю, Что проблема ... Intellij ничего не выделить ... вроде бы нормально.

ответ

0

Наиболее вероятной причиной вашей ошибки является то, что ваш файл определения не включен в контекст компиляции, так что ваш declare module 'target' никогда не вызывается.

Есть несколько способов, вы можете выбрать, чтобы включить его:

  1. Добавить ///<reference path="path/to/your/target.d.ts" /> в верхней части вашего switch.component.ts.

  2. Добавить path/to/your/target.d.ts в "file":[] массив в вашем tsconfig.json

  3. Добавить path/to/your/target.d.ts (или эквивалентный файл шаблона, который соответствовал бы его) к "include":[] массива в вашем tsconfig.json.

После того, как вы получите target.d.ts включены в контекст компиляции, то вы должны быть в состоянии import {Target, Device, Property} from 'target' где-нибудь в вашем приложении.

Смежные вопросы