Closure conversion is a program transformation used by compilers to separate code from data. Previous accounts of closure conversion use only untyped target languages. Recent studies show that translating to tgped target languages is a useful methodology for building compders, because a compder can use the types to implement efficient data representations, calling conventions, and tag-free garbage collection. Furthermore, type-based translations facilitate security and debugging through automatic type checking, as well as correctness arguments through themethod of logical relations, We present closure conversion as a type-directed, and type-preserving translation for both the simply-typed and the polymorphic ~-calculus. Our translations are based on a simple “closures as objects” principle: higher-order functions are viewed as objects consisting of a single method (the code) and a single instance variable (the environment). In the simply-typed case, the Pierce-Turner model of object typing where objects are packages of existential type suffices. In the polymorphic case, more careful tracking of type sharing is required. We exploit a variant of the HarperLillibridge “translucent type” formalism to characterize the types of polymorphic closures.