C
int a;
int b = 42;
#define C 42
TS
let a: number;
let b = 42; // type inference
const c = 42; // mostly do this
C
#include <stdio.h>
printf("%d\n", 42);
printf("%s\n", "foo");
TS
console.log(42);
console.log('foo');
C
int a;
float b;
// ...
a = 42;
b = 4.2;
TS
let a: number;
a = 42;
a = 4.2;
C
char a;
char *b;
a = 'f';
b = "foo";
TS
let a: string;
a = 'f';
a = "f";
a = 'foo';
a = "foo";
C
char *a = "foo";
strlen(a); // 3
TS
let a = 'foo';
a.length; // 3
C
#include <stdio.h>
int a = 49;
printf("I love %d\n", a);
TS
const a = 49;
console.log(`I love ${a}`);
// not for only printing
b = `I love ${a}`;
C
#include <stdbool.h>
bool a = true;
TS
const a: boolean = true;
const b = true; // type inference
C
if (1 + 1 == 2) {
// ...
}
TS
// bad
if (1 + 1 == 2) {
// ...
}
// good (does type check)
if (1 + 1 === 2) {
// ...
}
C
int a = 1;
int b = 2;
int max = a > b ? a : b; // 2
TS
const a = 1;
const b = 2;
const max = a > b ? a : b; // 2
C
int triple(int n) {
return n * 3;
}
TS
const triple1 = (n: number): number => {
return n * 3;
}
// type inference
const triple2 = (n: number) => {
return n * 3;
}
// only for single-line functions
const triple3 = (n: number) => n * 3;
C
typedef int MyType;
MyType a;
TS
type MyType = number;
let a: MyType;
C
struct Course {
char *name;
int students;
}
Course cs1511 = {
'Programming Fundamentals',
893
};
TS
type Course = {
name: string;
students: number;
}
// could also use type inference
let cs1511: Course = {
name: 'Programming Fundamentals',
students: 893
}
C
int a[3] = {1, 2, 3};
a[42] = 4; // segmentation fault
TS
const a: number[] = [1, 2, 3];
a[42] = 4;
a; // [1, 2, 3, 4]
C
int a[3] = {1, 2, 3};
int i = 0;
while (i < 3) {
int n = a[i];
printf("%d\n", n);
i++;
}
TS
const a: number[] = [1, 2, 3];
let i = 0;
while (i < 3) {
const n = a[i];
console.log(n);
i++;
}
// preferred
a.forEach((n) => {
console.log(n);
});
C
int a[3] = {1, 2, 3};
int i = 0;
while (i < 3) {
a[i] = a[i] * 2;
i++;
}
a; // {2, 4, 6}
TS
const a: number[] = [1, 2, 3];
const a2 = a.map((n) => n * 2);
a; // [1, 2, 3]
a2; // [2, 4, 6]
TS
let a: number | string;
a = 42;
a = 'foo';
let b = 'foo' | 'bar';
b = 'foo';
b = 'bar';
b = 'baz'; // compile error
TS
let a: number;
console.log(a); // undefined
let b: number | null;
b = 42;
b = null; // the "nothing" type