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;
}
}
Jeśli uruchomić kod następująco
c:\Work\TypeScript>tsc hello.ts
to działa OK. Jednak poniższy kod:
c:\Work\TypeScript>tsc --noImplicitAny hello.ts
rzuca
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.
Więc jeśli wyłączyć noImplicitAny
flagę, to będzie działać.
Nie wydaje się być innej opcji, jak również dlatego tsc
obsługuje następujące flagi:
--suppressImplicitAnyIndexErrors Suppress noImplicitAny errors for indexing objects lacking index signatures.
Działa to dla mnie zbyt:
tsc --noImplicitAny --suppressImplicitAnyIndexErrors hello.ts
Aktualizacja:
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;
}
}
Ten kod działa bez zmiany jakiejkolwiek kompilacji flagi er.
Myślę, że dzieje się tak z powodu 'klucza var w obiekcie' i użycia' klucza' później. Czy możesz spróbować uruchomić kompilację za pomocą 'noImplicitAny = false', aby potwierdzić? – FlorianTopf