Digital twin (DT) is an emerging technology that enables sophisticated interaction between physical objects and their virtual replicas. Although DT has recently gained significant attraction in both industry and academia, there is no systematic understanding of DT from its development history to its different concepts and applications in disparate disciplines. The majority of DT literature focuses on the conceptual development of DT frameworks for a specific implementation area. Hence, this paper provides a state-of-the-art review of DT history, different definitions and models, and six types of key enabling technologies. The review also provides a comprehensive survey of DT applications from two perspectives: (1) applications in four product-lifecycle phases, i.e. product design, manufacturing, operation and maintenance, and recycling and (2) applications in four categorized engineering fields, including aerospace engineering, tunneling and underground engineering, wind engineering and Internet of things (IoT) applications. DT frameworks, characteristic components, key technologies and specific applications are extracted for each DT category in this paper. A comprehensive survey of the DT references reveals the following findings: (1) The majority of existing DT models only involve one-way data transfer from physical entities to virtual models and (2) There is a lack of consideration of the environmental coupling, which results in the inaccurate representation of the virtual components in existing DT models. Thus, this paper highlights the role of environmental factor in DT enabling technologies and in categorized engineering applications. In addition, the review discusses the key challenges and provides future work for constructing DTs of complex engineering systems.