search
HomeWeb Front-endJS TutorialHow to go from JavaScript to TypeScript?

How to go from JavaScript to TypeScript?

Mar 21, 2019 am 10:57 AM
htmlhtml5javascriptnode.jstypescript

The content of this article is about how to go from JavaScript to TypeScript? It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.

If you want to learn typeScript, I think you must first be very proficient in native javaScript. The most basic knowledge is the most important, and then you must master ES5 ES6 ES7 (it is best to know some after 7). Once you master the new technology, you can It won't be so tiring. typeScript =type javaScript, adds a type on the basis of ES5/6/7 javaScript!

TS is really very strict compared to JS, as long as it slightly does not match the interface or value type, or it is If the number of parameters is incorrect, or if the value is changed and the type of the original value is not

consistent, an error will be reported. It is recommended to use npm to install typeScript globally and then use tsc *.ts to compile TS files

'The new core concept of typeScript:'let app:string=2;This code will report an error because the value 2 is a number, and the app is specified as string type, so an error will be reported in TS

New value type:

any: can be any type
vold:an empty Return type, such as function move():vold{} This means that this function has no return value. If it is changed to any, then it can be whatever type the function returns, but it must return otherwise TS will report an error

New concept: type inference

    let app = 'hello' ; app=1 ; This code will report an error because TS treats it as let app:string = 'hello', again To change the value of
app, it must be of string type, otherwise an error will be reported. This is type inference

Union type

    let app: string | number = 'hello' ; app = 1; This code will not report an error, because app is a union type variable, it can be either
string or number, as long as it matches one of the types That’s it, of course you can write more.

Interface interface (a point that is difficult for front-end programmers to understand)

    javaScript is also an object-oriented language, but in ES5 it is implemented based on prototypes, and in ES6 it is used class class, this will give you a clearer understanding of the term
Object-oriented, but the actual object-oriented in TS is more complete. Like languages ​​like JAVA, it is complete through interfaces and classes. Object-Oriented Programming.

    You can imagine the object as a woman (abstracted into a variable let app in TS)
  • We use the interface to describe this woman (use let app in TS: interfacename )
  • Finally use some methods to get the woman’s contact information (use the method in the class class in TS to achieve it)
For example:

class ask{

    name:string;
    
    tel ? :number  ;   //这里为什么加问号,因为你不一定能拿到她的号码,如果拿不到,那么便可以不传参数,
    
    但是如果不加? ,你又没那么号码,那么你没有参数传进来,TS就会报错 
    
    age:number ;
    
    constructor(name,age,tel){
         this.name=name;
         this.age=age;
         this.tel=tel
    }
}

interface check {

    name : string;
    
    age:number;
    
    tel ? :number;  
    
}

let woman :check = new ask ('rose',20,1888888888);//假设你拿到美女所有资料 传入构造函数
This way You can print console.log(woman) to see what it looks like. There is no error in the above code.

  • After the above code is compiled into a JS file through the tsc command

var ask = /* @class / (function () {
function ask(name, age, tel) {


    this.name = name;
    
    
    this.age = age;
    
    
    this.tel = tel;
    
    
}
return ask;
}());
let woman = new ask('rose', 20, 1888888888);
console.log(woman)
"It should be noted here that after many TS codes are compiled, they are not Will appear in JS files, such as const enum enumerations, interfaces, etc. Of course, you will encounter more "


concepts of tuples

  • arrays in JS later. It can store a large amount of content. The so-called tuple is actually an array of different data types
  • [1,'1',true,false] In fact, this is a tuple, but it is called differently.

The difference between enumeration enum and const enum
  • enum app { red, blue, pink, deeppink }
  • console.log( app.red, app.blue, app.pink, app.deeppink) // Output 0,1,2,3
  • enum app2 { red = 2, blue, pink, deeppink }
  • console.log(app2.red, app2.blue, app2.pink, app2.deeppink) // Output 2,3,4,5
  • The default first one in the enumeration The value is 0; you can also define it yourself. If the customization conflicts with the system default, TS will not recognize it and

will not report an error, but I don’t recommend you do this. After all, no one is fine. Looking for trouble?


There is also a constant enumeration


const enum Directions {
Up,
Down,
Left,
Right
}
let directions = [Directions.Up, Directions.Down, Directions.Left, Directions.Right]; 
// 结果是 0 1 2 3

* If it contains calculated members, an error will be reported during the compilation phase: * const enum Color {Red, Green , Blue = "blue".length};

* The difference between a constant enumeration and a normal enumeration is that it will be deleted during the compilation phase and cannot contain calculated members. You will know after a try

Classes and interfaces (one of the most important)

* A class can only inherit one interface at a time, but it can correspond to multiple interfaces at a time

* If you want to implement Multiple classes inherit, then use subclasses to continue to inherit other classes, and the cycle continues

interface check {
name: string;
age: number;
hobby: Array<number>
fuck: number[]   //这两种写法是一样的
}</number>
class exp implements check {
name: string
age: number
hobby:Array<number>
fuck: number[]
constructor(name, age, hobby, fuck) {
    this.name = name;
    this.age = age;
    this.hobby = hobby;
    this.fuck = fuck;
}
}
let app = new exp('hello', 18, [1, 2, 3], [2, 3, 4])</number>
------After TS compilation, you get


var exp = /* @class / (function () {
function exp(name, age, hobby, fuck) {
    this.name = name;
    this.age = age;
    this.hobby = hobby;
    this.fuck = fuck;
}
return exp;
}());
var app = new exp('hello', 18, [1, 2, 3], [2, 3, 4]);

typeScript is probably the most difficult That’s how to understand elegant object-oriented programming. The interface is just for description.

To really implement it, you need the class class to implement it. ES6 plays a very important role in typeScript. ###So I suggest you first Go learn native javaScript ES6 and then learn typeScript, it will be much easier, ###

This article has ended here. For more exciting content, you can pay attention to the JavaScript Tutorial Video column on the PHP Chinese website!

The above is the detailed content of How to go from JavaScript to TypeScript?. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:segmentfault. If there is any infringement, please contact admin@php.cn delete
JavaScript and the Web: Core Functionality and Use CasesJavaScript and the Web: Core Functionality and Use CasesApr 18, 2025 am 12:19 AM

The main uses of JavaScript in web development include client interaction, form verification and asynchronous communication. 1) Dynamic content update and user interaction through DOM operations; 2) Client verification is carried out before the user submits data to improve the user experience; 3) Refreshless communication with the server is achieved through AJAX technology.

Understanding the JavaScript Engine: Implementation DetailsUnderstanding the JavaScript Engine: Implementation DetailsApr 17, 2025 am 12:05 AM

Understanding how JavaScript engine works internally is important to developers because it helps write more efficient code and understand performance bottlenecks and optimization strategies. 1) The engine's workflow includes three stages: parsing, compiling and execution; 2) During the execution process, the engine will perform dynamic optimization, such as inline cache and hidden classes; 3) Best practices include avoiding global variables, optimizing loops, using const and lets, and avoiding excessive use of closures.

Python vs. JavaScript: The Learning Curve and Ease of UsePython vs. JavaScript: The Learning Curve and Ease of UseApr 16, 2025 am 12:12 AM

Python is more suitable for beginners, with a smooth learning curve and concise syntax; JavaScript is suitable for front-end development, with a steep learning curve and flexible syntax. 1. Python syntax is intuitive and suitable for data science and back-end development. 2. JavaScript is flexible and widely used in front-end and server-side programming.

Python vs. JavaScript: Community, Libraries, and ResourcesPython vs. JavaScript: Community, Libraries, and ResourcesApr 15, 2025 am 12:16 AM

Python and JavaScript have their own advantages and disadvantages in terms of community, libraries and resources. 1) The Python community is friendly and suitable for beginners, but the front-end development resources are not as rich as JavaScript. 2) Python is powerful in data science and machine learning libraries, while JavaScript is better in front-end development libraries and frameworks. 3) Both have rich learning resources, but Python is suitable for starting with official documents, while JavaScript is better with MDNWebDocs. The choice should be based on project needs and personal interests.

From C/C   to JavaScript: How It All WorksFrom C/C to JavaScript: How It All WorksApr 14, 2025 am 12:05 AM

The shift from C/C to JavaScript requires adapting to dynamic typing, garbage collection and asynchronous programming. 1) C/C is a statically typed language that requires manual memory management, while JavaScript is dynamically typed and garbage collection is automatically processed. 2) C/C needs to be compiled into machine code, while JavaScript is an interpreted language. 3) JavaScript introduces concepts such as closures, prototype chains and Promise, which enhances flexibility and asynchronous programming capabilities.

JavaScript Engines: Comparing ImplementationsJavaScript Engines: Comparing ImplementationsApr 13, 2025 am 12:05 AM

Different JavaScript engines have different effects when parsing and executing JavaScript code, because the implementation principles and optimization strategies of each engine differ. 1. Lexical analysis: convert source code into lexical unit. 2. Grammar analysis: Generate an abstract syntax tree. 3. Optimization and compilation: Generate machine code through the JIT compiler. 4. Execute: Run the machine code. V8 engine optimizes through instant compilation and hidden class, SpiderMonkey uses a type inference system, resulting in different performance performance on the same code.

Beyond the Browser: JavaScript in the Real WorldBeyond the Browser: JavaScript in the Real WorldApr 12, 2025 am 12:06 AM

JavaScript's applications in the real world include server-side programming, mobile application development and Internet of Things control: 1. Server-side programming is realized through Node.js, suitable for high concurrent request processing. 2. Mobile application development is carried out through ReactNative and supports cross-platform deployment. 3. Used for IoT device control through Johnny-Five library, suitable for hardware interaction.

Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Building a Multi-Tenant SaaS Application with Next.js (Backend Integration)Apr 11, 2025 am 08:23 AM

I built a functional multi-tenant SaaS application (an EdTech app) with your everyday tech tool and you can do the same. First, what’s a multi-tenant SaaS application? Multi-tenant SaaS applications let you serve multiple customers from a sing

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Integrate Eclipse with SAP NetWeaver application server.

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

Atom editor mac version download

Atom editor mac version download

The most popular open source editor