TypeScriptのエラーを解消したい
Q&A
Closed
TypeScriptのclass文法を勉強しています。
下記箇所にエラーの表示が出ます。
調べてもよくわからずエラーが改善しません。
何方か改善方法を教えてください。
//エラー文
Argument of type '"c"' is not assignable to parameter of type '"a" | "b"'.
//'c'の箇所に波線が表示される
wrappedObj1.set('c', '03') === false &&
if (wrappedObj1.get('b') === '04' && wrappedObj1.get('c') === undefined) {
type Obj01 = {
a: string;
b: string;
};
type K = keyof { a: string; b: string };
class ObjectWrapper <T extends Obj01> {
private _obj : T;
constructor(_obj:T) {
this._obj = { ..._obj };
}
get obj() {
return { ...this._obj };
}
set(key: K, val: string): boolean {
if (this._obj[key] !== undefined) {
this._obj[key] = val;
return true;
}
return false;
}
get(key:K ){
return this._obj[key];
}
findKeys(val: unknown):string {
return keys;
}
}
const obj1 = { a: '01', b: '02' };
const wrappedObj1 = new ObjectWrapper(obj1);
if (wrappedObj1.obj.a === '01') {
console.log('OK: get obj()');
} else {
console.error('NG: get obj()');
}
if (
wrappedObj1.set('c', '03') === false && //'c'の箇所に波線が表示される
wrappedObj1.set('b', '04') === true &&
wrappedObj1.obj.b === '04'
) {
console.log('OK: set(key, val)');
} else {
console.error('NG: set(key, val)');
}
if (wrappedObj1.get('b') === '04' && wrappedObj1.get('c') === undefined) { //'c'の箇所に波線が表示される
console.log('OK: get(key)');
} else {
console.error('NG: get(key)');
}
const obj2 = { a: '01', b: '02', bb: '02', bbb: '02' };
const wrappedObj2 = new ObjectWrapper(obj2);
const keys = wrappedObj2.findKeys('02');
if (
wrappedObj2.findKeys('03').length === 0 &&
keys.includes('b') &&
keys.includes('bb') &&
keys.includes('bbb') &&
keys.length === 3
) {
console.log('OK: findKeys(val)');
} else {
console.error('NG: findKeys(val)');
}