Better typing for grammars

This commit is contained in:
barsdeveloper
2024-06-06 23:16:21 +02:00
parent ad4ba2c46d
commit 98ebdd78b2
40 changed files with 301 additions and 233 deletions

View File

@@ -7,7 +7,9 @@ export default class ArrayEntity extends IEntity {
/** @type {typeof IEntity} */
static type
static grammar = this.createGrammar()
static grammar = /** @type {P<ArrayEntity<IEntity>>} */(
this.createGrammar()
)
get length() {
return this.values.length
@@ -43,8 +45,8 @@ export default class ArrayEntity extends IEntity {
const result = /** @type {typeof ArrayEntity<ExtractType<T>> & {type: T, grammar: P<ArrayEntity<ExtractType<T>>> }} */(
this.asUniqueClass()
)
result.type = /** @type {ExtractType<T>} */(type)
result.grammar = result.createGrammar()
result.type = type
result.grammar = /** @type {P<ArrayEntity>} */(result.createGrammar())
return result
}