<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨 Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section! Please help us by doing the following steps before logging an issue: * Search: https://github.com/Microsoft/TypeScript/search?type=Issues * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ Please fill in the *entire* template below. --> <!-- Please try to reproduce the issue with the latest published version. It may have already been fixed. For npm: `typescript@next` This is also the 'Nightly' version in the playground: http://www.typescriptlang.org/play/?ts=Nightly --> **TypeScript Version:** 3.7.2 <!-- Search terms you tried before logging this (so others can find this issue more easily) --> **Search Terms:** assert function import export **Code** ```ts // Module asserts.ts function isNonNullable<T>(obj: T): asserts obj is NonNullable<T> { if(obj === undefined || obj === null) { throw new Error('Must not be a nullable value'); } } export { isNonNullable }; // Module test.ts import * as asserts from './asserts.ts'; function test(obj: string | null): void { asserts.isNonNullable(obj); obj.trim(); } ``` **Expected behavior:** Everything works as expected **Actual behavior:** Error: Assertions require every name in the call target to be declared with an explicit type annotation. If I rewrite test.ts with: ```ts // Module test.ts import { isNonNullable } from './asserts.ts'; function test(obj: string | null): void { isNonNullable(obj); obj.trim(); } ``` then everything compiles without any error