사용자 지정 형식 정의를 사용하여 Express API 내에서 반환 형식을보다 구체적으로 지정하고 싶습니다. 우리는 응용 프로그램 내에 전역 객체를 유지하기 위해 app.set
과 app.get
을 사용하고 있습니다.반환 형식을 더 구체화하기 위해 병합하는 Typescript 인터페이스
app.get('foo')
은 특정 클래스 MyClass
을 반환하므로 명시 적으로 캐스팅하지 않으려면 TypeScript를 사용하여이 사실을 표현하고 싶습니다. 내 사용자 정의 유형 정의에서
get: ((name: string) => any) & IRouterMatcher<this>;
나는 다음과 같은 추가 : 다음과 같이
는
포함 index.d.ts
에 app.get
에 대한 기존의 정의가 보이는
import { MyClass } from '../MyClass';
declare global {
namespace Express {
export interface Application {
get (name: 'foo'): MyClass;
// also tried this to conform to existing structure:
// get: ((name: 'foo') => MyClass);
}
}
}
그러나 두 경우의 반환 형식
app.get('foo')
은 여전히
any
입니다.
이 가능 암시 적으로 올바른 유형을 가지고가 일을 할 때는 ... 다음 :
let myObject = app.get('foo');
... 그리고 것을 방지하려면 쓰기 :
let myObject: MyClass = app.get('foo');
자세한 설명 및 제안에 대해 감사드립니다. 매우 도움이된다! – qqilihq