Я использую babel
, и для меня работает следующий синтаксис:
class MyClass {
static constant1 = 33;
static constant2 = {
case1: 1,
case2: 2,
};
// ...
}
MyClass.constant1 === 33
MyClass.constant2.case1 === 1
Пожалуйста, учтите, что вам нужен пресет "stage-0"
. Чтобы установить его:
npm install --save-dev babel-preset-stage-0
// in .babelrc
{
"presets": ["stage-0"]
}
Обновление:
в настоящее время используют stage-2
Я очень сомневаюсь, что это будет когда-либо иметь прямую поддержку языка или даже поддержку платформы - это - вид вещи, которая обрабатывается отлично со сторонними библиотеками.
Мой собственный порт кода Java является явным - необходимо назвать методы для сериализирования/десериализовывания. (Существуют тупики RPC, которые автоматически сериализируют/десериализуют, но никакая реализация RPC все же.)
проект Marc Gravell согласуется очень приятно с WCF, хотя - насколько я знаю, просто необходимо сказать ему (однажды) использовать буферы протокола для сериализации, и остальное прозрачно.
С точки зрения скорости, необходимо посмотреть страница сравнительного теста Marc Gravell. Мой код имеет тенденцию быть немного быстрее, чем его, но оба очень, намного быстрее, чем другие опции сериализации/десериализации в платформе. Нужно указать, что буферы протокола намного более ограничены также - они не пытаются сериализировать произвольные типы, только поддерживаемые. Мы собираемся попытаться поддерживать больше типов общих данных (десятичное число, DateTime и т.д.) портативным способом (как их собственные буферные сообщения протокола) в будущем.
Некоторая производительность и метрики размера находятся на [1 112] эта страница . У меня нет статистики Jon на там в данный момент, просто потому что страница немного стара (Jon: мы должны зафиксировать это!).
Ре, являющееся прозрачным; protobuf-сеть может сцепиться в WCF по контракту; обратите внимание, что это играет приятно с MTOM по основному-http также. Это не работает с Silverlight, тем не менее, так как Silverlight испытывает недостаток в инжекционной точке. При использовании svcutil также необходимо добавить атрибут к классу (через частичный класс).
Ре BinaryFormatter (дистанционная работа); да, это имеет полный supprt; можно сделать это просто тривиальным ISerializable
реализация (т.е. просто звонить Serializer
метод с тем же args). Если Вы используете protogen
для создания классов, то это может сделать это для Вас: можно включить это в командной строке через аргументы (она не включена по умолчанию, поскольку BinaryFormatter
не работает над всеми платформами [CF, и т.д.]).
Примечание, что для очень маленьких объектов (единственные экземпляры, и т.д.) на локальной дистанционной работе (IPC), сырые данные BinaryFormatter
производительность на самом деле лучше - но для нетривиальных графиков или удаленных каналов (сетевая дистанционная работа) protobuf-сеть может превзойти его по характеристикам вполне прилично.
я должен также отметить, что буферный формат провода протокола непосредственно не поддерживает наследование; protobuf-сеть может имитировать это (в то время как сдерживающая проводная совместимость), но как с XmlSerializer, необходимо объявить подклассы заранее.
<час>радости открытого исходного кода, я предполагаю;-p Jon и я работали над совместными проектами прежде и обсудили слияние этих двух, но факт - то, что они предназначаются для двух различных сценариев:
XmlSerializer
, DataContractSerializer
, и т.д.) , Если Вы работаете над Java и клиентами.NET, Jon является, вероятно, хорошим выбором для знакомого API с обеих сторон. Если Вы - чистая.NET, protobuf-сеть имеет преимущества - знакомый API стиля.NET, но также и:
[DataContract]
и [XmlType]
, классы могут часто использоваться без каких-либо изменений вообще) BinaryFormatter
, XmlSerializer
, WCF, DataContractSerializer
) - разрешение его работать непосредственно механизмом дистанционной работы. Это, по-видимому, было бы вполне большим разделением от основной соединительной линии Java для порта Jon. Ре, объединяющее их; я думаю, что мы оба были бы открыты для него, но кажется маловероятным, что Вы хотели бы оба набора функций, так как они предназначаются для таких различных требований.