Возможно написать строго типизированные классы сущностей в JavaScript? - PullRequest
0 голосов
/ 19 сентября 2009

Когда я получаю JSON-сущности через jQuery с сервера и манипулирую ими на стороне клиента, у меня возникает желание увидеть их интерфейс через Visual Studio intellisense. Итак, игнорируя, является ли это глупой идеей, возможно ли это каким-либо образом?

Итак, я подумал, что могу ссылаться на Entities.js, который будет содержать определения для всех сущностей, то есть:

Class Person
   String Name
   String Address
   String Telephone
Enc Class

Итак, при написании javascript на стороне клиента эти свойства будут видны через intellisense.

У меня такое чувство, что это невозможно, хотя? Если нет, то может ли это быть смоделировано через перечисления или что-то в этом роде?

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

Вы можете включить в свой код комментарии XML, которые Visual Studio 2008 распознает как «подсказки» Intellisense.

Проверьте следующие статьи:

образец http://blogs.msdn.com/photos/webdevtools/images/1783721/original.aspx

0 голосов
/ 19 сентября 2009

Вы можете обернуть данные в классы JavaScript, например:

var someJson = { foo: 'foo', bar: 'bar' };

var MyClass = function(foo, bar) { this.foo = foo; this.bar = bar; }
MyClass.prototype = {
    foo: '',
    bar: ''
};

var someObj = new MyClass(someJson.foo, someJson.bar);

Я не знаю о Visual Studio, но IntelliJ IDEA и Aptana должны иметь возможность автоматически завершать подобные структуры.

Это также во многом зависит от того, может ли среда IDE определить тип переменной откуда-либо. Если вы передаете какой-либо объект в качестве параметра функции, IDE может не определить тип этого типа. Этому обычно может помочь подсказка типа в комментарии стиля JsDoc или что-то подобное.

Это действительно те проблемы, которые требуют либо подсказок JsDoc, либо умных предположений IDE. По моему опыту, IntelliJ делает лучшую работу в этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...