Подтвердить что ты не робот

Файл объявления SignalR typecripf

Я начал использовать typescript, легко нашел файлы декларации (d.ts) для angular.js и jquery. Невозможно найти его для jQuery SignalR.

Можете ли вы, ребята, помочь мне. Я мог бы просто создать интерфейс, который extends JQuery, но как-то он не работает...

var hub = $.connection.myHub

он жалуется на connection вещь... говорит: "Свойство" connection "не существует по значению типа" JQueryStatic "

4b9b3361

Ответ 1

DefinitelyTyped имеет полное определение TypeScript для SignalR.

Просто обновил ссылку, спасибо Stuart

Ответ 2

Вот что я смог приготовить быстро и грязно. Имейте в виду, что это, вероятно, едва ли правильно, но это достаточно для меня прямо сейчас, и, похоже, оно работает по назначению.

Это может быть неплохо начать. Давайте назовем его "jquery.signalR-0.5.3.d.ts":

/// <reference path="jquery.d.ts" />
interface Hub {
    id: string;
    state: any;
    start(options?: any, callback?: () => any): JQueryPromise;
}

interface SignalR {    
    log(msg: string, logging: bool): void;
    isCrossDomain(url: string): bool;
    changeState(connection: any, expectedState: number, newState: number): bool;
    isDisconnecting(connection: any): bool;

    hub: Hub;
    connection: HubConnection;

    init(url, qs, logging): void;
    ajaxDataType: string;
    logging: bool;
    reconnectDelay: number;
    state: any;
    start(options?: any, callback?: () => any): JQueryPromise;
    starting(callback?: () => any): SignalR;
    send (data): SignalR;
    sending (callback?: () => any): SignalR;
    received (callback?: (data) => any): SignalR;
    stateChanged (callback?: (data) => any): SignalR;
    error (callback?: (data) => any): SignalR;
    disconnected (callback?: () => any): SignalR;
    reconnected (callback?: () => any): SignalR;
    stop (async? : bool): SignalR;
}

interface HubConnection extends SignalR {
    hub: Hub;
}

// extend JQuery interface
interface JQueryStatic {
    signalR: SignalR;
    connection: SignalR;
}

то вы можете определить контракт для своего концентратора:

/// <reference path="./jquery.signalR-0.5.3.d.ts" />

interface IMyHub extends HubConnection {
    // your methods definition here
}

// extend SignalR interface
interface SignalR {
    myHub: IMyHub;
}

Ответ 3

[Self-штекер]

Я создал инструмент для создания файлов декларации TypeScript для ваших концентраторов, методов и типов, которые вы передаете между клиентом и сервером. Он также включает в себя последний файл definifiedTyped signalr.d.ts. Я выпустил альфа-версию как пакет nuget: SignalR.TypeScript. Чтобы установить этот пакет, запустите в консоли диспетчера пакетов следующую команду:

Install-Package SignalR.TypeScript -Pre 

Дополнительная информация и инструкции в моем блоге: http://murat.girg.in/2013/11/introducing-signalr-typescript/

[/Self-штекер]

Ответ 4

Было ли это так:

interface signalR extends JQueryStatic {
     connection;
}

var hub = (<signalR>$).connection.myHub

Ответ 5

Это не идеально, но если вам нужно быстро переместить чистый JavaScript-сигнал signalR в Typescript, вы можете использовать такой интерфейс (вам нужно будет включить определение типа signalr.d.ts).

interface SignalR {
    messageHub: any;
}

var chat = $.connection.messageHub;
chat.client.actionMessage = function (data) {
    console.info("actionMessage: received: message: " + data.message);
};