1. A computer-implemented method, comprising: obtaining a first type, the first type associated with a value of an expression used in a first source code hosted by a host application; inferring a second type for a value of an expression used in a second source code based on the first type, the value of the expression used in the second source code not associated with a type, the second source code hosted by the host application, the first source code written in a dynamic type programming language, the second source code written in a strongly typed programming language; and compiling the second source code using at least one of the first type, type information from source code executed in the host application and type information from external references, for the value of the expression used in the second source code.