powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / TypeScript: мертворожденное дитя?
25 сообщений из 34, страница 1 из 2
TypeScript: мертворожденное дитя?
    #38138375
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Текущий релиз еще не достиг половозрелости - 0.8.2, альфа. Что дальше? Или это просто хворостина в колесо гуголя?

И есть ли примочки для студии генерации тс - например, классов?


Перевернув мир - оглянись, может перевернулся ты сам?!
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138386
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имел ввиду классов C# -> в класс TS.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138389
.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
.
Гость
имхо не тот форум
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138402
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
.имхо не тот форум
это уже не имеет значения.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138434
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просим, ждем, надеемся.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138454
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типизировать яваскрипт? Или вы про что?
Вопрос: а нафига?
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138474
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeТипизировать яваскрипт? Или вы про что?
Вопрос: а нафига?Чтобы делать меньше ошибок.
Чтобы генерировать серверную модель данных на клиенте.
iConst И есть ли примочки для студии генерации тс - например, классов?У меня есть.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138481
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy...
iConst И есть ли примочки для студии генерации тс - например, классов?У меня есть.Дразнишься? :)
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138488
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConstAntonariy...
пропущено...
У меня есть.Дразнишься? :)Я примочки для студий сам себе пишу :)
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138491
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Синтаксических ошибок? Я думаю, что ты и без типизации с этим прекрасно справишься. ;)
Насчёт "генерировать серверную модель данных на клиенте" можно поподробнее?
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138502
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyiConstпропущено...
Дразнишься? :)Я примочки для студий сам себе пишу :)Понятно. Я уж губу раскатал... :) Придется, значит, самому :(
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138563
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeAntonariy,

Синтаксических ошибок? Я думаю, что ты и без типизации с этим прекрасно справишься. ;)
Насчёт "генерировать серверную модель данных на клиенте" можно поподробнее?
Ты слыхал про такого зверя как анаптрейсив джаваскрипт, который успешно юзается в мвц и вебформс? Это кодогенерация с серверной модели представления.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138564
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУShSergeAntonariy,

Синтаксических ошибок? Я думаю, что ты и без типизации с этим прекрасно справишься. ;)
Насчёт "генерировать серверную модель данных на клиенте" можно поподробнее?
Ты слыхал про такого зверя как анаптрейсив джаваскрипт, который успешно юзается в мвц и вебформс? Это кодогенерация с серверной модели представления.
А типизированный скрипт это еще круче :)
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138600
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУShSergeAntonariy,

Синтаксических ошибок? Я думаю, что ты и без типизации с этим прекрасно справишься. ;)
Насчёт "генерировать серверную модель данных на клиенте" можно поподробнее?
Ты слыхал про такого зверя как анаптрейсив джаваскрипт, который успешно юзается в мвц и вебформс? Это кодогенерация с серверной модели представления.Ты хочешь сказать, что Unobtrusive ("ненавязчивый") JavaScript - это всего-лишь какая-то кодогенерация с серверной модели представления, правильно? Что-то в статье по ссылке ничего про это не сказано.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138606
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeСинтаксических ошибок? Я думаю, что ты и без типизации с этим прекрасно справишься. ;)Когда в таблице или вьюхе 100500 полей нет-нет, да и ошибешься. Или когда развесистых объектов наваяешь, забудешь как какое-нибудь свойство/метод называется, от этого иногда случается неожиданный секс с отловом мутных глюков. А с типизацией работает интеллисенс студии — очепятки пропадают в принципе.

ShSergeНасчёт "генерировать серверную модель данных на клиенте" можно поподробнее?Имеем классы, нагенеренные EF, имеем интерфейс веб-сервиса. Делаем "тынц" и те же самые классы и интерфейсы объявляются на клиенте.

Пример:
Это серверная логика, описывающая интерфейс и реализацию какого-то объекта:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
<TSReflect(ClassTypes.ctBusinessLayer)>
Public Class Production
    Inherits Handler

    Public Function GetList(ByVal Page As Integer, ByVal Records As Integer) As Response
        Dim mResp As New Response
        Dim sSQL As String = MyBase.State.GetListSQL("mtskProduction", "ProductionID", Page, Records, "Publish=1")
        Dim rec As List(Of mtskProduction) = MyBase.db.Database.SqlQuery(Of mtskProduction)(sSQL).ToList
        mResp.Rowset.rows = From v In rec Select v.Code, v.Name, v.ProductionID, v.ProdName, v.ProdOwnerForm
        Return mResp
    End Function

    Public Function SaveRecord(ByVal value As tblProduction, Optional ByVal OKPCode As String = "") As Response
        ...
    End Function

    Public Function AddFiles(ProductionID As Integer, Files As List(Of Integer)) As Response
        ...
    End Function

    Public Function AddParts(ProductionID As Integer, Parts As List(Of Integer)) As Response
        ...
    End Function

End Class


Это транспортный класс, который сериализуется в json и отдается клиенту в ответ на запрос. В принципе ничто не мешает гонять его в обоих направлениях, достаточно сделать его параметром какой-нибудь серверной функции.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<TSReflect(ClassTypes.ctTransport)>
Public Class Response
    Public [Rowset] As Rowset
    Public Test As String

    Public Sub New()
        Rowset = New Rowset
    End Sub
End Class

<TSReflect(ClassTypes.ctTransport)>
Public Class Rowset
    Public localRowset As Boolean
    Public entire As Integer
    Public total As Integer
    Public rows As IEnumerable(Of Object)
End Class


Обратите внимание на атрибуты классов, это подсказка аддину какой тип ts-интерфейса генерировать к серверному классу, транспортный или логический.

А это клиент:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
function save() {
    var prod = new tblProduction;
    prod.ProductionID = 22;
    prod.Name = "34634535345";
    AjaxAshxService.Production.SaveRecord(prod, null, function(Response: Response) { 
        alert(Response.toString());
    });
}

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

Серверный tblProduction сгенерирован энтити фреймворком на основе таблицы из базы, клиентский сгенерирован моим аддином на основании EF'овского. Интерфейс модуля AjaxAshxService.Production сгенерирован аддином на основании класса Production.

Мне нужно описать членов классов всего в одном месте — в базе или классе — и они прозрачно доступны сквозь весь проект.

Вот это мне писать больше не надо, оно само :)
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
/*
This source code was generated by TypeScript Reflect addin.
All custom modification of this code will be discarded.
*/

class tblProduction{
	ProductionID:number;
	Name:string;
	Code:string;
	Description:string;
	UnitID:number;
	OrganizationID:number;
	NormDocName:string;
	FileID:number;
	ProducerIsSupplier:bool;
	Publish:bool;
	Comments:string;
	Picture:any[];
	AddPassportID:number;
	UpdatePassportID:number;
	AddTime:Date;
	LastUpdate:Date;
}
// + еще 100500 классов


Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
/*
This source code was generated by TypeScript Reflect addin.
All custom modification of this code will be discarded.
*/

/// <reference path="MTSK.edmx.ts" />

module AjaxAshxService {
// function responseErrorCallback(xhr:XmlHttpRequest){}
    export var errorResponseCallback: Function;

    // function parseErrorCallback(error:string, responseText:string){}
    export var errorParseCallback: Function;

    function NewQuery(method: string, url: string, callback: Function, data?:any): XMLHttpRequest {
        var xhr:XMLHttpRequest;
        if (XMLHttpRequest) {
            xhr = new XMLHttpRequest();
        } else if (ActiveXObject) {
            xhr = new ActiveXObject("MSXML2.XMLHTTP");
        } else {
            alert("Your browser doesn't support XmlHttpRequest!");
            return;
        }
        xhr.open(method, url, true);
        xhr.setRequestHeader("X-Requested-With", "XmlHttpRequest");
        if (method == 'post') xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                try {
                    var response: any = xhr.response;
                    callback(response);
                } catch (e) {
                    errorParseCallback(e, xhr.responseText);
                }
            } else if (xhr.readyState == 4 && xhr.status == 500) {
                errorResponseCallback(xhr);
            }
        }
        if (data) { xhr.send(data) } else { xhr.send() };
        return xhr;
    }

    function MakeQuery(ObjName: string, callback: Function, Args: any):void { 
        var para = Args.callee.argumentNames();
        var queryStr: string = ObjName+".ashx/"+ para.func + "?", form: string = "", arg: string;
        for (var x = 0; x < Args.length-1; x++) {
            if (typeof Args[x] == "object") {
                form += para.argNames[x] + "=" + encodeURIComponent(JSON.stringify(Args[x])) + "&";
            } else {
                queryStr += para.argNames[x] + "=" + encodeURIComponent(Args[x]) + "&";
            }
        }
        NewQuery(form.length ? "post" : "get", queryStr, callback, form);
    }
	export module Catalogue {
		var objName:string = 'Catalogue';
		// function callback(returnValue:Response){}
		export function AddRecords(CatalogueID:number,value?:tblCatalogue[],callback?:Function):void{MakeQuery(objName,callback,arguments)}

		// function callback(returnValue:Response){}
		export function AddRecord(ID:number,Relation?:string,callback?:Function):void{MakeQuery(objName,callback,arguments)}

		// function callback(returnValue:Response){}
		export function DelRecord(ID:number,callback?:Function):void{MakeQuery(objName,callback,arguments)}

		// function callback(returnValue:Response){}
		export function GetList(ID?:number,callback?:Function):void{MakeQuery(objName,callback,arguments)}

		// function callback(returnValue:Response){}
		export function SaveRecord(value:tblCatalogue,callback?:Function):void{MakeQuery(objName,callback,arguments)}

	}

	export module Production {
		var objName:string = 'Production';
		// function callback(returnValue:Response){}
		export function GetList(Page:number,Records:number,callback?:Function):void{MakeQuery(objName,callback,arguments)}

		// function callback(returnValue:Response){}
		export function SaveRecord(value:tblProduction,OKPCode?:string,callback?:Function):void{MakeQuery(objName,callback,arguments)}

	}

}

interface jsCallee {
    func: string;
    argNames: string[];
}

Function.prototype["argumentNames"] = function() {
    var ret: jsCallee = { func: null, argNames: null };
    ret.argNames = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1].replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '').replace(/\s+/g, '').split(',');
    ret.func = this.toString().match(/^[\s\(]*function[^\w]+([\w]+)[^\w]*\(/)[1];
    return ret;
}


Само собой, эта архитектура заточена исключительно под ajax.

Можно написать ts-интерфейс к какому-нибудь ExtJS и будет полное щастье, студия за тебя сделает 2/3 той работы, корторую раньше делал ты сам. Кстати, интерфейс к jQuery уже существует.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138610
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУмвц и вебформсЭти перегруженные свистелками и перделками модели я в гробу видел.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138622
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Ты слыхал про такого зверя как анаптрейсив джаваскрипт, который успешно юзается в мвц и вебформс? Это кодогенерация с серверной модели представления.Ты хочешь сказать, что Unobtrusive ("ненавязчивый") JavaScript - это всего-лишь какая-то кодогенерация с серверной модели представления, правильно? Что-то в статье по ссылке ничего про это не сказано.
Купи мозги, а не учись по википедии. Не навязчивый скрипт это правильно, ибо освобождает нас от дублирования валидации на клиенте. Эта валидация автоматом генерится.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138625
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМСУмвц и вебформсЭти перегруженные свистелками и перделками модели я в гробу видел.
Ты просто не умеешь их готовить.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138641
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто кодогенерация с серверной модели представления.Мне есть что сказать по поводу кодогенерации EF. Ее писал даун. Есть хоть какое-то логическое объяснение, почему он обошел вниманием дефолты бд? Почему я вынужден дописывать за кодогенератором это говно?
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Partial Public Class uwsState
    Sub New()
        Me.Deleted = False
        Me.Blocked = False
        Me.Stamp = Now
    End Sub
End Class

А если я вообще не в курсе, какие там умолчания должны быть, у меня же только модель на руках?

Еще она не умеет апдейтить вьюшки, а у меня есть специальные вьюшки для апдейта. В отличии от умолчаний, про которые я однозначно выяснил, что EF о них не в курсе, тему с апдейтом я пока плотно не раскуривал, может что-то можно сделать без дописывания partial class? А если нет, то что именно дописывать?
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138649
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУAntonariyпропущено...
Эти перегруженные свистелками и перделками модели я в гробу видел.
Ты просто не умеешь их готовить.На обучение их готовке у меня уйдет больше времени, чем на написание своего собственного мвц. Так что фтопку.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138650
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Вброс не по теме. Но отвечу. Дефолты зло, они должны отруливаться в модели предметной области. Но тебе еще рано сюда суваться, капашись пока в датасетах.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138651
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyМСУпропущено...

Ты просто не умеешь их готовить.На обучение их готовке у меня уйдет больше времени, чем на написание своего собственного мвц. Так что фтопку.
Как коррелирует технология и твои проблемы с тем, что ты не осилил ее?
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138664
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты что-то выдумываешь. У меня нет проблем с этой технологией, ее для меня просто не существует.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138676
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУskyANAпропущено...
Ты хочешь сказать, что Unobtrusive ("ненавязчивый") JavaScript - это всего-лишь какая-то кодогенерация с серверной модели представления, правильно? Что-то в статье по ссылке ничего про это не сказано.
Купи мозги, а не учись по википедии. Не навязчивый скрипт это правильно, ибо освобождает нас от дублирования валидации на клиенте. Эта валидация автоматом генерится.Статья в ВикипедиИ - это тупо пример, где описаны принципы ненавязчивого JavaScript-а. Ты просто говоришь так, что получается, что реализация поддержки Unobtrusive JavaScript в ASP.NET последних версий - это и есть этот самый Unobtrusive JavaScript.
Извини, но Unobtrusive JavaScript никак не связан с тем, что крутится на сервере: ASP.NET, PHP, Node.js.
Так либо пруф на то, что ненавязчивый JavaScript - это всего-лишь какая-то кодогенерация с серверной модели представления.
Либо поясни, что хотел сказать-то вообще.
Либо купи мозги.
...
Рейтинг: 0 / 0
TypeScript: мертворожденное дитя?
    #38138696
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУпропущено...

Купи мозги, а не учись по википедии. Не навязчивый скрипт это правильно, ибо освобождает нас от дублирования валидации на клиенте. Эта валидация автоматом генерится.Статья в ВикипедиИ - это тупо пример, где описаны принципы ненавязчивого JavaScript-а. Ты просто говоришь так, что получается, что реализация поддержки Unobtrusive JavaScript в ASP.NET последних версий - это и есть этот самый Unobtrusive JavaScript.
Извини, но Unobtrusive JavaScript никак не связан с тем, что крутится на сервере: ASP.NET, PHP, Node.js.
Так либо пруф на то, что ненавязчивый JavaScript - это всего-лишь какая-то кодогенерация с серверной модели представления.
Либо поясни, что хотел сказать-то вообще.
Либо купи мозги.
Боюсь тебе уже поздно объяснять разницу между ненавязчивым js и тайпед скриптом, поможет хирургия твоего мозга. Гугли, бездарь.
...
Рейтинг: 0 / 0
25 сообщений из 34, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / TypeScript: мертворожденное дитя?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]