Используя tcomb, я что-то упускаю или невозможно определить функцию экземпляра?
Я пытаюсь использовать tcomb
и терпит неудачу в данный момент, потому что я не могу обернуть голову, как определить функцию экземпляра.
Скажем, у меня есть тип:
t.struct({
year: t.Integer,
monthIndex: t.Integer,
dayIndex: t.maybe(t.Integer),
indexInMonth: t.maybe(t.Integer),
title: t.Str,
subtitle: t.maybe(t.Str),
description: t.maybe(t.Str),
iconIdentifier: t.maybe(t.Str),
})
Все идет нормально.
Эта проблема
Теперь скажем, я хочу добавить month
методэкземпляра, который может читать this
и получите правильное название месяца:
month() {
return MonthsInYear[this.monthIndex]
},
Если я попытаюсь добавить это к внутренней части вышеупомянутого, это просто не видит это.
const b1 = CalEvent({
year: 2015,
monthIndex:2,
title: 'abc',
description: 'abc'
})
console.log(b1.month)
То же самое происходит, если я пытаюсь сделать mixin
или действительно что-нибудь кроме определения функции каждый раз.
У меня изначально был of
Синтаксис там, как с функцией compare
ниже...
t.struct({
year: t.Integer,
monthIndex: t.Integer,
compare: t.func([CalEvent], CalEventComparisonResult).of(
(toCompare) => CalEvent(compare(this,toCompare))
),
dayIndex: t.maybe(t.Integer),
indexInMonth: t.maybe(t.Integer),
title: t.Str,
subtitle: t.maybe(t.Str),
description: t.maybe(t.Str),
iconIdentifier: t.maybe(t.Str),
})
Все еще нет игры в кости.
Я начинаю думать, что то, что я хочу сделать, не может быть сделано в течение tcomb
, И если это так, я буду шокирован, что такая базовая возможность не включена...
1 ответ
От README
const Person = t.struct({
name: t.String, // required string
surname: t.maybe(t.String), // optional string
age: Integer, // required integer
tags: t.list(t.String) // a list of strings
}, 'Person');
// methods are defined as usual
Person.prototype.getFullName = function () {
return `${this.name} ${this.surname}`;
};