★マークの所に、any以外の何の型を入力したら良いか教えてほしい。
Q&A
Closed
解決したいこと
TypeScriptのclass文法を勉強しています。
★マークの所に、any以外の何の型を入力したら良いか教えてほしいです。
何方かアドバイスをお願いします
Vscodeで、赤い下波線にクリックすると下記が表示されます。
メンバー '_obj' の型は暗黙的に 'any' になります。ts(7008)
anyを入力したら、エラー表示はなくなるのですが、
『any型はTypeScriptを使う上で、基本的に定義してはいけません。理由としてですが、any = なんでも良いということはTypeScriptを使用する意味がなく、JavaScriptを使っているのと同じになってしまいます。』と参考サイトに書いてあるので、
『string』を入力してみたのですが、他のエラー表示が出ます。
『string』以外で定義がありましたら、教えてください。
TypeScript.ts
/***this._objがインスタンス化した引数のオブジェクト型になるようにprivate _objに型を割り当てる*/
class ObjectWrapper {
private _obj:★;
// エラー文 メンバー '_obj' の型は暗黙的に 'any' になります。ts(7008)
/***
* 引数のオブジェクトのコピーを this._objに設定
*/
//変更前 constructor(_obj: Object) {}
constructor(_obj: Object) {
this._obj(_obj);
}
/**
* this._objのコピーを返却
* @return Object
*/
//変更前 get obj() {}
get obj() {
return this._obj;
}
/**
* this._obj[key] に valを設定。keyがthis._objに存在しない場合、falseを返却
* @param key オブジェクトのキー
* @param val オブジェクトの値
*/
//変更前set(key, val): boolean {}
set(key: string, val: string): boolean {
if (this._obj[key] !== undefined) {
this._obj[key](val);
return true;
}
return false;
}
/**
* 指定したキーの値のコピーを返却
* 指定のキーが存在しない場合 undefinedを返却
* @param key オブジェクトのキー
*/
//変更前get(key) {}
get(key: string) {
return this._obj;
}
/**
* 指定した値を持つkeyの配列を返却。該当のものがなければ空の配列を返却。
*/
//findKeys(val: unknown) {}
findKeys(val: unknown): string[] {
return this._obj(val);
}
}
const objecting = new ObjectWrapper('Objecting');
/**
* check script
* 完成したら、以下のスクリプトがすべてOKになる。
*/
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 &&
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) {
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)');
}
0