giritharan
Tue May 07 2024
Typescript Learning
Variable definition: In Typescript we can specify the type string, number and boolean like
let myName: string = "Vijay";
let age: number = 20;
let isActive: boolean = false;
Moreover, if we don't specify the type typescript automatically detects the type by itself. But end of the defining the type was a good convention.
Function Definition: • For defining a function we can specify the function parameters type. Along with that we can able to set the default value. And also the return value.
function sum(a: number, b: number = 2): number {
return a + b;
}
• For Arrow function:
let sum = (a: number, b: number = 2): number => a + b;
Why don't use any
:
• Using any
in TypeScript bypasses type checking but undermines TypeScript's static typing advantages. It's better to specify types explicitly for safer and more maintainable code.
Array:
With the help of the array, we can store number, string and boolean values separately and mixed.
For String
let users: string[] = ["a", "b", "c", "d]
For Number
let count: number[] = [1, 2, 3, 4]
For boolean
let isActive: boolean[] = [true, false]
For Mixed array
let allDate: (string | number)[] = ["a", "b", "c", 1]
Here Array contains only integers and strings
Void And Never:
• void
is a type that represents the absence of returning value. It's often used as the return type of function that doesn't return any value.
function logError(msg: string): void {
console.log(msg);
}
• never
represents the type of values that never occur:. It's typically used as the return type of functions that never return (i.e., always throw an error).
function throwError(message: string): never {
throw new Error(message);
}
Object Type:
• Object Types
is used to pass the object as a parameter in the functions.
function fetchData(pt: { x: number; y: number }) {
return pt;
}
fetchData({ x: 3, y: 7 });
• If we want mentioned as an optional prop we can do that with the help of ?
operator
function fetchData(pt: { x: number; y?: number }) {
return pt;
}
fetchData({ x: 3 });
Union Types: • It means type can be formed in two or more types, which means values can be anything from the union value.
function sum(a: string | number) {
return a;
}
Here you can see value can be anything string or number
Type Aliases
• When can use both object type and union type but if we want use more than once we can use Type Aliases
or Interface
.
type User = {
name: string;
age: number;
}
function displayUser(prop: User) {
console.log(prop.name);
console.log(prop.age);
}
displayUser({name: 'John', age: 22})
• Moreover on the type, we can able to do extend the values.
type User = {
name: string;
age: number;
}
type Role = {
role: string
}
type UserDeatils = User & Role & {
address: string;
}
• From above you can see that the userDetails inherits the user and role props without adding extra value. So that helps to keep DRY over time. Interface: • Interface is also similar in concept to type_._ it's another way to name an object type.
interface User {
name: string;
age: number;
}
function displayUser(prop: User) {
console.log(prop.name);
console.log(prop.age);
}
displayUser({name: 'John', age: 22})
• It allows the extending feature.
interface User {
name: string;
age: number;
}
interface Role {
role: string
}
interface userDetails extends User, Role {
address: string;
}
• The Only difference is type not available for re-opening for adding new properties. Readonly and Optional: • with the help of that, we can mark the value as read-only or optional.
type User = {
readonly id: string;
name: string;
phone: number;
isActive: boolean;
email?: string;
};
• If we try to access id typescript will throw an exception
. Also, email is not present on obj it does not make exceptions.
Tuples:
• Tuples are a data structure that allows you to store a fixed-size, ordered collection of elements.
• Each element in a tuple may have a different data type. They are similar to arrays, but their size and types are fixed once they are defined.
let myTuple: [string, number, boolean];
myTuple = ['hello', 10, true];
• In typles we can modify elements of the tuple using array method with different types. It doesn't show any warning we always need to be aware of it.
Enums:
• Enums in TypeScript are usually used to represent a determined number of options for a given value.
• TypeScript provides both numeric and string-based enums
• Numeric enums:
▪︎ By default enum value starts from 0
until we explicitly mention something:
const enum UserType {
ADMIN,
USER,
GUEST,
}
• We can explicitly change the enum value
const enum UserType {
ADMIN = 10,
USER,
GUEST,
}
• so from now value goes like 11, 12 in upstream • String enums: ◦ String enums are similar to numbers, But here we can specify string instead of numeric
const enum UserType {
ADMIN = "admin",
USER = "user",
GUEST = "guest",
}
• Heterogeneous enums: ◦ We can mix up string and numeric on enum. But After string, if numeric get started we need to mention the numeric value for the first one.
const enum UserType {
ADMIN = "admin",
USER = 0,
GUEST,
}
• Remaining value can typescript will handles. #typescript #javascript
syedsibtain
Tue May 07 2024
In Rails, a partial is a reusable view template that allows you to encapsulate a portion of a view into a separate file. Partials are useful for organising and reusing code, especially when certain components or elements are repeated across multiple views within an application.
We can create a partial by creating a new file with a name that begins with an underscore (_
). For example, _sidebar.html.erb
or _header.html.erb
.
And to render a partial within another view, use the render
method with the name of the partial file (without the underscore) as an argument. For example, <%= render 'sidebar' %>
will render the _sidebar.html.erb
partial within the current view.
#rails
syedsibtain
Thu May 02 2024
The rails routes
command generates a comprehensive list of all routes defined in our Rails application, displaying the HTTP method, URL pattern, controller, and action associated with each route.
#rails
satya
Mon Apr 29 2024
find your rails code smells by using a gem called flog
. Flog finds the most tortured code in your codebase.
gem install flog
then run
flog app lib
it will print the flog score for the all files that has score more than or equal to 10. Generally we should make sure flog score should be less than 10. Note: The more the flog score , the more pain the code is in. #rails #code-smells #flog
syedsibtain
Fri Apr 26 2024
In Ruby, instance variables
are variables that belong to a specific instance of a class. They are prefixed with the @
symbol and are accessible within the instance methods of that class. Instance variables allow objects to maintain state and store information unique to each instance.
Example:
class Person
def initialize(name, age)
@name = name
@age = age
end
def say_intro
puts "Hello, my name is #{@name} and I am #{@age} years old"
end
end
# Create a new instance of Person
person1 = Person.new("John", 18)
# Call the say_intro method
person1.say_intro
In this example, @name
is an instance variable of the Person
class, representing the name of each Person
object created. The initialize
method is a constructor that sets the value of @name
when a new Person
object is created. The say_intro
method uses the instance variable @name
to give the intro of the person with their name and age when called.
#ruby
nisanth
Thu Apr 25 2024
The docker stats
command is a powerful tool provided by Docker to monitor the resource usage of running containers. It provides a real-time stream of various metrics such as CPU usage, memory usage, network I/O, block I/O, and the number of processes (PIDs) running inside each container. This command is particularly useful for performance analysis and ensuring that containers are running within their resource limits.
Example Explanation
docker stats db370fc6b784
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
db370fc6b784 minikube 43.70% 1.243GiB / 2.148GiB 57.87% 35.4MB / 414MB
#devops #docker
vaibhav.yadav
Wed Apr 24 2024
We can check the default value for a given column using postgres query like this:
SELECT column_name, column_default
FROM information_schema.columns
WHERE table_name = '<table_name_placeholder>' AND column_name = '<column_name_placeholder>';
Same can be used for constraints like is_nullable
as following:
SELECT column_name, is_nullable
FROM information_schema.columns
WHERE table_name = '<table_name_placeholder>' AND column_name = '<column_name_placeholder>';
#database #postgres #query
sujay
Tue Apr 23 2024
active_record_doctor
performs variety of health checks to identify and rectify common database issues like missing foreign key constraints, missing NON NULL constraints, missing presence validations, incorrect presence validations on boolean columns and many more. Ref: https://github.com/gregnavis/active_record_doctor
#rails #database
sagar.ghorse
Mon Apr 22 2024
while integrating sentry
with gitlab
ip whitelisting needs to be done on gitlab server (self-hosted)
#devops #sentry#gitlab
soniya.rayabagi
Mon Apr 22 2024
The kubectl cordon NODE_NAME
command is used in Kubernetes to mark a node as unschedulable
, meaning no new pods will be scheduled onto that node. Existing pods on the node will continue to run unless explicitly terminated or moved.
#devops #kubernetes
Showing 8 to 10 of 66 results