Я настраиваю проект .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 в случае, если у меня недостаточно информации в моих примерах кода.
Я не вижу ссылки на hubs.d.ts в любом месте, но я мог что-то пропустить. –
Извините, совсем недавно я взял его, чтобы проверить вещи, это было в моем индексе типизации. Я редактирую сообщение, чтобы включить это. –
Я тоже борюсь с этим. Но с ионной 2. Заработали ли вы? – Mukus