Improve typing
This commit is contained in:
parent
09b230b5be
commit
978df7253c
3 changed files with 29 additions and 11 deletions
|
@ -7,10 +7,10 @@ export class Translation extends BaseUIElement {
|
|||
|
||||
public static forcedLanguage = undefined;
|
||||
|
||||
public readonly translations: object
|
||||
public readonly translations: Record<string, string>
|
||||
context?: string;
|
||||
|
||||
constructor(translations: object, context?: string) {
|
||||
constructor(translations: Record<string, string>, context?: string) {
|
||||
super()
|
||||
if (translations === undefined) {
|
||||
console.error("Translation without content at "+context)
|
||||
|
@ -264,7 +264,7 @@ export class Translation extends BaseUIElement {
|
|||
}
|
||||
|
||||
export class TypedTranslation<T> extends Translation {
|
||||
constructor(translations: object, context?: string) {
|
||||
constructor(translations: Record<string, string>, context?: string) {
|
||||
super(translations, context);
|
||||
}
|
||||
|
||||
|
|
30
Utils.ts
30
Utils.ts
|
@ -931,20 +931,38 @@ In the case that MapComplete is pointed to the testing grounds, the edit will be
|
|||
return track[str2.length][str1.length];
|
||||
}
|
||||
|
||||
public static MapToObj<T>(d: Map<string, T>, onValue: ((t: T, key: string) => any) = undefined): object {
|
||||
public static MapToObj<V, T>(d: Map<string, V>, onValue: ((t: V, key: string) => T)): Record<string, T> {
|
||||
const o = {}
|
||||
const keys = Array.from(d.keys())
|
||||
keys.sort();
|
||||
for (const key of keys) {
|
||||
let value = d.get(key)
|
||||
if (onValue !== undefined) {
|
||||
value = onValue(value, key)
|
||||
}
|
||||
o[key] = value;
|
||||
o[key] = onValue(d.get(key), key);
|
||||
}
|
||||
return o
|
||||
}
|
||||
|
||||
/**
|
||||
* Switches keys and values around
|
||||
*
|
||||
* Utils.TransposeMap({"a" : ["b", "c"], "x" : ["b", "y"]}) // => {"b" : ["a", "x"], "c" : ["a"], "y" : ["x"]}
|
||||
*/
|
||||
public static TransposeMap<K extends string, V extends string>(d: Record<K, V[]>) : Record<V, K[]>{
|
||||
const newD : Record<V, K[]> = <any> {};
|
||||
|
||||
for (const k in d) {
|
||||
const vs = d[k]
|
||||
for (let v of vs) {
|
||||
const list = newD[v]
|
||||
if(list === undefined){
|
||||
newD[v] = [k] // Left: indexing; right: list with one element
|
||||
}else{
|
||||
list.push(k)
|
||||
}
|
||||
}
|
||||
}
|
||||
return newD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Utils.colorAsHex({r: 255, g: 128, b: 0}) // => "#ff8000"
|
||||
* Utils.colorAsHex(undefined) // => undefined
|
||||
|
|
|
@ -66,8 +66,8 @@ async function main(includeTags = true) {
|
|||
writeFileSync("./assets/key_totals.json",
|
||||
JSON.stringify(
|
||||
{
|
||||
keys: Utils.MapToObj(keyTotal),
|
||||
tags: Utils.MapToObj(tagTotal, v => Utils.MapToObj(v))
|
||||
keys: Utils.MapToObj(keyTotal, t => t),
|
||||
tags: Utils.MapToObj(tagTotal, v => Utils.MapToObj(v, t => t))
|
||||
},
|
||||
null, " "
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue