class test<T> {
copyObject<T> (object:T):T {
var objectCopy = <T>{};
for (var key in object) {
if (object.hasOwnProperty(key)) {
objectCopy[key] = object[key];
}
}
return objectCopy;
}
}
Wenn ich den Code ausführen wie folgt
c:\Work\TypeScript>tsc hello.ts
es OK funktioniert. Doch die folgenden Code ein:
c:\Work\TypeScript>tsc --noImplicitAny hello.ts
wirft
hello.ts(6,17): error TS7017: Index signature of object type implicitly has an 'any' type.
hello.ts(6,35): error TS7017: Index signature of object type implicitly has an 'any' type.
Also, wenn Sie noImplicitAny
Flag zu deaktivieren, wird es funktionieren.
Es scheint auch eine andere Option zu sein, weil tsc
das folgende Flag unterstützt:
--suppressImplicitAnyIndexErrors Suppress noImplicitAny errors for indexing objects lacking index signatures.
Dies funktioniert für mich auch:
tsc --noImplicitAny --suppressImplicitAnyIndexErrors hello.ts
Update:
class test<T> {
copyObject<T> (object:T):T {
let objectCopy:any = <T>{};
let objectSource:any = object;
for (var key in objectSource) {
if (objectSource.hasOwnProperty(key)) {
objectCopy[key] = objectSource[key];
}
}
return objectCopy;
}
}
Dieser Code funktioniert ohne Änderung der Kompilierung Er Fahnen.
Ich denke, es ist wegen der 'var-Taste in Objekt' und die Verwendung von' key' danach. Können Sie versuchen, die Kompilierung mit 'noImplicitAny = false' zu starten, um dies zu bestätigen? – FlorianTopf