SlideShare a Scribd company logo
1 of 15
Download to read offline
Making Visualforce RemoteActions
Bulletproof with TypeScript
​ Simon Goodyear
​ Beaufort 12
​ @simongoodyear
​ 
Simon Goodyear
Co-Founder, Beaufort 12
Demo
The Problem
Root Cause Analysis
​ JavaScript is not metadata aware
Making JavaScript Metadata Aware
What we need Where we get it
Method Signatures Tooling API
Custom Apex Types Tooling API
SObjects Standard API
Making JavaScript Metadata Aware
​ JavaScript is loosely typed
What is TypeScript?
​  “TypeScript is a typed superset of JavaScript that compiles to plain JavaScript”
​  “…a symantic subset of JavaScript; the sensical subset” – Anders Hejlsberg
​  Aimed at improving the development experience for JavaScript
What is TypeScript?
​  Strongly typed. Tools perform type inference.
​  Modules, Classes & Interfaces
​  4 primitives: string, number, boolean, any
​  TypeScriptLang.org
Demo
Introduction to TypeScript
Joining the Dots
​  Represent metadata as classes in TypeScript
•  We need tools to do this
​  We no longer write JavaScript
•  TypeScript only now
​  TypeScript is compiled before deployment
•  And thus type checked
Demo
Joining the dots
Where Next?
​  Better flow for developers
•  Create a grunt task
•  Automatically generate d.ts files on metadata changes
​  Improved support of metadata
•  Inner classes
•  Namespace support
​  Integration with continuous integration tools
​  Whatever else you can imagine
3 Simple Points
​  JavaScript is not aware of the Salesforce metadata
​  All the metadata is exposed via the Tooling and Standard APIs
​  We can make TypeScript aware of the Salesforce metadata
Resources
​  typescriptlang.org
​  blogs.msdn.com/b/typescript
​  channel9.msdn.com/Tags/typescript
​  definitelytyped.org
​  github.com/Microsoft/TypeScript-Sublime-Plugin
Thank you

More Related Content

What's hot

Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
Pronovix
 
API Readiness: Visualizing and Virtualizing
API Readiness: Visualizing and VirtualizingAPI Readiness: Visualizing and Virtualizing
API Readiness: Visualizing and Virtualizing
Lorinda Brandon
 

What's hot (19)

Lessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation systemLessons learned: Choosing your documentation system
Lessons learned: Choosing your documentation system
 
Microservices; A Quick Introduction
Microservices; A Quick IntroductionMicroservices; A Quick Introduction
Microservices; A Quick Introduction
 
Few minutes To better Code - Refactoring
Few minutes To better Code - RefactoringFew minutes To better Code - Refactoring
Few minutes To better Code - Refactoring
 
Polyglot
PolyglotPolyglot
Polyglot
 
Contributing to open source
Contributing to open sourceContributing to open source
Contributing to open source
 
Useful automation
Useful automationUseful automation
Useful automation
 
Automated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choiceAutomated Acceptance Tests & Tool choice
Automated Acceptance Tests & Tool choice
 
Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with Swagger
 
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
apidays LIVE London 2021 - Designing APIs: Less Data is More by Damir Svrtan,...
 
The Big Wave of Indian Startups - Almost Effortless Entrepreneurship Using Ruby
The Big Wave of Indian Startups - Almost Effortless Entrepreneurship Using RubyThe Big Wave of Indian Startups - Almost Effortless Entrepreneurship Using Ruby
The Big Wave of Indian Startups - Almost Effortless Entrepreneurship Using Ruby
 
Frontend as a first class citizen
Frontend as a first class citizenFrontend as a first class citizen
Frontend as a first class citizen
 
Message Queues in Ruby - An Overview
Message Queues in Ruby - An OverviewMessage Queues in Ruby - An Overview
Message Queues in Ruby - An Overview
 
Do's and Don'ts of APIs
Do's and Don'ts of APIsDo's and Don'ts of APIs
Do's and Don'ts of APIs
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 
Cypress test techniques cucumber bdd framework,tdd,api tests course
Cypress test techniques cucumber bdd framework,tdd,api tests courseCypress test techniques cucumber bdd framework,tdd,api tests course
Cypress test techniques cucumber bdd framework,tdd,api tests course
 
API Readiness: Visualizing and Virtualizing
API Readiness: Visualizing and VirtualizingAPI Readiness: Visualizing and Virtualizing
API Readiness: Visualizing and Virtualizing
 
SubmitJS: Is react + redux + typescript a good combination? Dmytro Beseda
SubmitJS: Is react + redux + typescript a good combination? Dmytro BesedaSubmitJS: Is react + redux + typescript a good combination? Dmytro Beseda
SubmitJS: Is react + redux + typescript a good combination? Dmytro Beseda
 
Swagger for startups
Swagger for startupsSwagger for startups
Swagger for startups
 
Type script = javascript (alomst) done right
Type script = javascript (alomst) done rightType script = javascript (alomst) done right
Type script = javascript (alomst) done right
 

Viewers also liked

Book New York Flights
Book New York FlightsBook New York Flights
Book New York Flights
Globehunters
 
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCHGNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
William John Meegan
 
여성대출정보『BU797』.『COM』은행학자금대출 펜션
여성대출정보『BU797』.『COM』은행학자금대출 펜션여성대출정보『BU797』.『COM』은행학자금대출 펜션
여성대출정보『BU797』.『COM』은행학자금대출 펜션
jdhfrter
 

Viewers also liked (19)

Making Visualforce RemoteActions Bulletproof with TypeScript
Making Visualforce RemoteActions Bulletproof with TypeScriptMaking Visualforce RemoteActions Bulletproof with TypeScript
Making Visualforce RemoteActions Bulletproof with TypeScript
 
5 Steps to Drive Sustainable SharePoint Adoption
5 Steps to Drive Sustainable SharePoint Adoption5 Steps to Drive Sustainable SharePoint Adoption
5 Steps to Drive Sustainable SharePoint Adoption
 
Book New York Flights
Book New York FlightsBook New York Flights
Book New York Flights
 
English_interior
English_interiorEnglish_interior
English_interior
 
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCHGNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
GNOSTICISM and HERESY Proportional to the Teachings of the ROMAN CATHOLIC CHURCH
 
Verslag observatiebedrijf
Verslag observatiebedrijfVerslag observatiebedrijf
Verslag observatiebedrijf
 
Surveyt
SurveytSurveyt
Surveyt
 
Guia de trabajo técnica de la discusión
Guia de trabajo   técnica de la discusiónGuia de trabajo   técnica de la discusión
Guia de trabajo técnica de la discusión
 
Entrepreneurs learn the power of the hashtag for your business
Entrepreneurs learn the power of the hashtag for your businessEntrepreneurs learn the power of the hashtag for your business
Entrepreneurs learn the power of the hashtag for your business
 
Blok 18 (novalia)
Blok 18 (novalia)Blok 18 (novalia)
Blok 18 (novalia)
 
Introduction of your training company
Introduction of your training companyIntroduction of your training company
Introduction of your training company
 
Paneras de navidad
Paneras de navidadPaneras de navidad
Paneras de navidad
 
Didattica differenziata workshop
Didattica differenziata workshopDidattica differenziata workshop
Didattica differenziata workshop
 
ID CV CARELL ANNE ROSE GARCIA
ID CV CARELL ANNE ROSE GARCIAID CV CARELL ANNE ROSE GARCIA
ID CV CARELL ANNE ROSE GARCIA
 
Who will be the next AfDB president?
Who will be the next AfDB president?Who will be the next AfDB president?
Who will be the next AfDB president?
 
Nilly mechanical%20engineering[1]
Nilly mechanical%20engineering[1]Nilly mechanical%20engineering[1]
Nilly mechanical%20engineering[1]
 
여성대출정보『BU797』.『COM』은행학자금대출 펜션
여성대출정보『BU797』.『COM』은행학자금대출 펜션여성대출정보『BU797』.『COM』은행학자금대출 펜션
여성대출정보『BU797』.『COM』은행학자금대출 펜션
 
SparkLabs Global @ APEC STARTUPS CONFERENCE III
SparkLabs Global @ APEC STARTUPS CONFERENCE IIISparkLabs Global @ APEC STARTUPS CONFERENCE III
SparkLabs Global @ APEC STARTUPS CONFERENCE III
 
Reverse engineering
Reverse engineeringReverse engineering
Reverse engineering
 

Similar to Making Visualforce RemoteAction Bulletproof with TypeScript

I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
Peter Presnell
 
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
lisacrispin
 

Similar to Making Visualforce RemoteAction Bulletproof with TypeScript (20)

Do testers have to code... to be useful?
Do testers have to code... to be useful?Do testers have to code... to be useful?
Do testers have to code... to be useful?
 
TypeScript and SharePoint
TypeScript and SharePoint TypeScript and SharePoint
TypeScript and SharePoint
 
Typescript overview
Typescript overviewTypescript overview
Typescript overview
 
TypeScript
TypeScriptTypeScript
TypeScript
 
TypeScript VS JavaScript.pptx
TypeScript VS JavaScript.pptxTypeScript VS JavaScript.pptx
TypeScript VS JavaScript.pptx
 
Typescript kata The TDD style 2 edition
Typescript kata The TDD style 2 editionTypescript kata The TDD style 2 edition
Typescript kata The TDD style 2 edition
 
Kickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond ConferenceKickass Agile Development - Agile & Beyond Conference
Kickass Agile Development - Agile & Beyond Conference
 
I Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application TestingI Smell A RAT- Rapid Application Testing
I Smell A RAT- Rapid Application Testing
 
An Introduction to TypeScript: Definition, History, and Key Features
An Introduction to TypeScript: Definition, History, and Key FeaturesAn Introduction to TypeScript: Definition, History, and Key Features
An Introduction to TypeScript: Definition, History, and Key Features
 
What is TypeScript? It's Definition, History And Features
What is TypeScript? It's Definition, History And FeaturesWhat is TypeScript? It's Definition, History And Features
What is TypeScript? It's Definition, History And Features
 
Type script
Type scriptType script
Type script
 
Write Generic Code with the Tooling API
Write Generic Code with the Tooling APIWrite Generic Code with the Tooling API
Write Generic Code with the Tooling API
 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better apps
 
Using type script to build better apps
Using type script to build better appsUsing type script to build better apps
Using type script to build better apps
 
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
Do testers have to code... to be useful? Janet Gregory and Lisa Crispin plena...
 
Migrating Web SDK from JS to TS
Migrating Web SDK from JS to TSMigrating Web SDK from JS to TS
Migrating Web SDK from JS to TS
 
Quo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynoteQuo vadis, JavaScript? Devday.pl keynote
Quo vadis, JavaScript? Devday.pl keynote
 
API Design Workflows
API Design WorkflowsAPI Design Workflows
API Design Workflows
 
API-First Design and Django
API-First Design and DjangoAPI-First Design and Django
API-First Design and Django
 
TypeScript-SPS-melb.pptx
TypeScript-SPS-melb.pptxTypeScript-SPS-melb.pptx
TypeScript-SPS-melb.pptx
 

More from Salesforce Developers

More from Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 

Recently uploaded

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 

Making Visualforce RemoteAction Bulletproof with TypeScript