사용할 때 모듈을 가져올 필요없이 모든 곳에서 사용할 수있는 전역 함수를 정의하려고합니다.TypeScript에서 전역 함수를 정의하는 방법은 무엇입니까?
이 함수는 C#에서 사용할 수있는 안전 탐색 연산자 (?)를 대체하기위한 것입니다. 가독성을 위해 함수의 접두어에 모듈 이름을 사용하고 싶지 않습니다.
Global.d.ts :
declare function s<T>(someObject: T | null | undefined, defaultValue?: T | null | undefined) : T;
Global.tsx :
///<reference path="Global.d.ts" />
export function s<T>(object: T | null | undefined, defaultValue: T | null = null = {} as T) : T {
if (typeof object === 'undefined' || object === null)
return defaultValue as T;
else
return object;
}
App.tsx (루트 타이프 라이터 파일) :
import 'Global';
다른 TSX 파일 (방법 사용) :
s(s(nullableVar).member).member; //Runtime error
그러나이 컴파일러는 괜찮 으면 브라우저에서 's is not a function
'을 던집니다.
, 나는'재산권의이 'Window'''유형에 존재하지 않는 수. 두 번째 해결 방안으로,'전역 범위에 대한 증강은 외부 모듈 또는 주변 모듈 선언에 직접 중첩 될 수 있습니다 .'라고합니다. – sixtstorm1
또한 dts 파일의 내 함수를'declare global {...}'안에 감싸려고했지만, 함수를 사용할 때 컴파일시'name을 찾을 수 없습니다 '라는 오류가 발생합니다. .s', 나는 싫어. – sixtstorm1
내 대답을 편집했습니다. 잘하면 도움이됩니다. – CaseyWebb