Ողջույն միջին! Սա իմ առաջին, հուսով եմ, TypeScript հակիրճ տեղեկատվության շարքն է, որը նախատեսված է արագ մուտք գործելու համար, երբ ինչ-որ մեկին անհրաժեշտ է հիշել հայեցակարգը կամ օգտագործել այս հիանալի ծրագրավորման լեզվի օրինակը:

Սկսենք սովորական տեսակներից, որոնք մենք օգտագործում ենք ամեն անգամ, բայց դա կարող է տեղի ունենալ, և երբեմն մենք պետք է արագ վերանայենք:

Պարզունակները

լար

// Explicit type
const NAME: string = "Bob";

// Implicit type
const NAME = "Alice";

համար

Հիշիր: JavaScript-ը (TS-ը կառուցված է JS-ի վրա) չունի հատուկ գործարկման արժեք ամբողջ թվերի համար, ուստի չկա int կամ float-ին համարժեք, ամեն ինչ պարզապես number է:

// Explicit type
const THIS_IS_AN_INTEGER: number = 1000;
const THIS_IS_A_FLOATING: number = 1000.5;

// Implicit type
const THIS_IS_AN_INTEGER = 1000;
const THIS_IS_A_FLOATING = 1000.5;

բուլյան

// Explicit type
const FLAG: boolean = true;

// Implicit type
const FLAG = false;

Զանգվածներ

const NUMBERS_ARRAY: number[] = [1, 2, 3];

const NUMBERS_ARRAY_TOO: Array<number> = [4.1, 5.2, 6.3];

//Accessing some element
const TWO: number = NUMBERS_ARRAY[1];
const SIX_POINT_THREE = NUMBERS_ARRAY_TOO[2];

//Read only array
const VOWELS: readonly string[] = ["a", "e", "i", "o", "u"];
VOWELS.push("z"); //Will say: "Property 'push' does not exist on type 'readonly string[]'."

Հատուկ տեսակներ

ցանկացած

// This type disables type checking allowing all types to be used
let joker: any = "I'm a string";
joker = false;
joker = joker + 5;

// "useful when you don’t want to write out a long type just to convince TypeScript that a particular line of code is okay."
const OBJECT_I_KNOW: any = { a:"a", two:2, etc:true};

անհայտ

Ես պետք է կանգ առնեմ այստեղ բացատրելու կամ հիշելու համար, մի փոքր ավելի այս տեսակը: անհայտ տեսակն օգտագործվում է նշելու, որ փոփոխականի տեսակը հայտնի չէ՝ կանխելով Typescript-ի կողմից տրամադրված տիպի պաշտպանության կորուստը: Օրինակ, եթե դուք սահմանում եք any տիպի օբյեկտ, գործնականում կարող եք փորձել մուտք գործել դրա ցանկացած հատկություն, նույնիսկ եթե այդ հատկությունը գոյություն չունի, ինչը կարող է հանգեցնել վրիպակների. բայց եթե օբյեկտը սահմանում եք որպես անհայտ տեսակ, չեք կարող օգտագործել այն, քանի դեռ չեք փոխանցել այն հայտնի տիպի:

const ILL_BUG: any = {uniqueProperty: "I'm unique"};
console.log(ILL_BUG.anotherProperty); //This will log as undefined

const ILL_NOT_BUG: unknown = {uniqueProperty: "I'm unique"};
console.log(ILL_NOT_BUG.anotherProperty); //This will say "'ILL_NOT_BUG' is of type 'unknown'." preventing the undefined log

console.log(ILL_NOT_BUG as {uniqueProperty: string;}); //This cast alows the variable to be used

անհայտտեսակը շատ հետաքրքիր և ծավալուն թեմա է: Տեղեկացրեք ինձ, եթե կցանկանաք, որ ես խորամուխ լինեմ սա:

երբեք

Սա ևս մեկ տեսակ է, որն օգտագործվում է արտահոսքերը կամ սխալները կանխելու համար, դուք օգտագործում եք այն, երբ համոզված եք, որ ձեր գործառույթը երբեք որևէ բան չի վերադարձնի: Դուք կարող եք ասել, որ դա void է, բայց void կարող է ունենալ null կամ չսահմանված արժեք, մինչդեռ երբեք, երբեք…

// You know that this function always will throw an error and no more
function throwError(error: string): never { 
            throw new Error(error); 
} 

undefined & null

let IM_UNDEFINED: any; // Notice that an uninitialized variable cannot be const, use let
console.log(IM_UNDEFINED); // Will log 'undefined'

const IM_NULL: any = null;
console.log(IM_NULL); // Will log 'null'

Tuples

// A typed array
const PERSONAL_DATA: [string, number, boolean] = ["Alice", 30, true];

Օբյեկտներ

const PERSONAL_DATA: { name: string, age: number, married: boolean} = { name: "Alice", age: 30, married: true};

Համարներ

// Enum: A group of constants

// Default
enum WEEK_DAYS {
  sunday,
  monday,
  tuesday,
  wednesday,
  thursday,
  friday,
  saturday
};

// Fully initialized
enum HTTP_CODES {
    SUCCESS = 200,
    BAD_REQUEST = 400,
    UNAUTHORIZED = 401,
    NOT_FOUND = 404,
};
console.log(HTTP_CODES.SUCCESS); // Will log '200'

միություն

// Two or more types in one
function printId(id: number | string) {
  console.log("Your ID is: " + id);
}
printId(10145134); // Will log "Your ID is: 10145134" 
printId("202-bc34"); // Will log "Your ID is: 202-bc34"

Մուտքագրեք փոխանուններ և միջերեսներ

// You can define an object as type and its properties
type Point = {
  x: number;
  y: number;
};
 
function printXYCoordinates(pt: Point) {
  console.log("X coordinate: " + pt.x);
  console.log("Y coordinate: " + pt.y);
}
 
printXYCoordinates({ x: 5, y: 5 });

// The interface works similary
interface IPoint {
  x: number;
  y: number;
}

// But you can add new properties to an existing interface
interface IPoint {
  z: number;
}
 
function print3DCoordinates(pt: IPoint) {
  console.log("X coordinate: " + pt.x);
  console.log("Y coordinate: " + pt.y);
  console.log("Z coordinate: " + pt.z);

}
 
print3DCoordinates({ x: 5, y: 5, z: 5 });

Դե, այս ամենն առայժմ: Հուսով եմ, որ այն օգտակար է եղել ձեզ համար, և որ դուք ցանկանում եք պահպանել այս բովանդակությունը՝ այս տեղեկատվությունը արագ մուտք գործելու համար: Հուսով եմ, որ կստանամ շատ արձագանքներ՝ բարելավելու իմ բովանդակությունը և շարունակելու հավաքագրել տվյալներ, որոնք կօգնեն մեզ բոլորիս շարունակել գրագրումը::