2016-10-16 1 views
1

Я настраиваю проект .NET Core с использованием Angular 2, TypeScript и SignalR. Я создал и использую типичные типы jQuery и SignalR DefinitelyTyped.ТипScript не может найти расширение с расширением по всему миру для SignalR

Несколько статей (например, one) предложили добавить сильную типизацию в мой концентратор SignalR через интерфейсы, объявляющие, что доступно на сервере-концентраторе и клиенте.

После большой корректировки я наконец получил счастливую IDE: он обнаруживает интерфейсы и расширение без суеты. Однако всякий раз, когда я собираюсь строить, TypeScript жалуется, что он не может найти имя «IRoomHub» (мое имя интерфейса хаба).

Вот декларация моих интерфейсов, то он хранится в файле hubs.d.ts в папке signalr для моей типизации (глобально установленной):

interface SignalR { 
    roomHub: IRoomHub; 
} 

interface IRoomHub { 
    client: IRoomHubClient; 
    server: IRoomHubServer; 
} 

interface IRoomHubClient { 
    initiateTimer: (startMinutes: number) => void; 
} 

interface IRoomHubServer { 
    initiateTimer(roomId: number, startMinutes: number): Promise<void>; 
} 

Моего употреблены в моей папке сценариев:

import { Component, OnInit } from '@angular/core'; 
import { RoomService } from './room.service'; 
import { Room } from './room'; 

@Component({ 
    selector: 'rooms', 
    template: `...`, 
    providers: [RoomService] 
}) 
export class AdministrationPage implements OnInit { 

    roomHub: IRoomHub; 

    constructor(private roomService: RoomService) { } 

    rooms: Room[]; 

    initialize(room: Room) { 
     this.roomHub.server.initiateTimer(room.id, room.startMinutes); 
    } 

    getRooms(): void { 
     this.roomService.getRooms().then(rooms => this.rooms = rooms); 
    } 

    ngOnInit(): void { 
     this.getRooms(); 
     this.roomHub = $.connection.roomHub; 
    } 
} 

моего TSconfig:

{ 
    "compilerOptions": { 
    "noImplicitAny": false, 
    "noEmitOnError": true, 
    "removeComments": false, 
    "sourceMap": true, 
    "target": "es5", 
    "outDir": "../wwwroot/scripts/app", 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true 
    }, 
    "exclude": [ 
    "node_modules", 
    "wwwroot" 
    ] 
} 

, и моя типизация index.d.ts файл:

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

Я попытался изменить из интерфейса экспортировать интерфейс, окружая его в пространстве имен декларировать и модуля объявляют, но компилятор всегда есть проблемы, находя это в той или иной форме. Кроме того, он не может найти $. мой код доступен here в случае, если у меня недостаточно информации в моих примерах кода.

+0

Я не вижу ссылки на hubs.d.ts в любом месте, но я мог что-то пропустить. –

+0

Извините, совсем недавно я взял его, чтобы проверить вещи, это было в моем индексе типизации. Я редактирую сообщение, чтобы включить это. –

+1

Я тоже борюсь с этим. Но с ионной 2. Заработали ли вы? – Mukus

ответ

0

удостоверьтесь, что у вас есть jQuery в вашем typings.json файл.

"JQuery": "реестр: дт/JQuery",

выполнить: типизации установить

Надеются, что это помогает.

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

  • Нет связанных вопросов^_^