100% found this document useful (6 votes)
31 views52 pages

Pro TypeScript: Application-Scale Javascript Development Second Edition Fenton 2024 Scribd Download

development

Uploaded by

kamarechliha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
100% found this document useful (6 votes)
31 views52 pages

Pro TypeScript: Application-Scale Javascript Development Second Edition Fenton 2024 Scribd Download

development

Uploaded by

kamarechliha
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
Download as pdf or txt
Download as pdf or txt
You are on page 1/ 52

Download the full version of the textbook now at textbookfull.

com

Pro TypeScript: application-scale javascript


development Second Edition Fenton

https://textbookfull.com/product/pro-typescript-
application-scale-javascript-development-second-
edition-fenton/

Explore and download more textbook at https://textbookfull.com


Recommended digital products (PDF, EPUB, MOBI) that
you can download immediately if you are interested.

Pro TypeScript: Application-Scale JavaScript Development


2nd Edition Steve Fenton

https://textbookfull.com/product/pro-typescript-application-scale-
javascript-development-2nd-edition-steve-fenton/

textbookfull.com

Essential TypeScript 4 From Beginner to Pro Second Edition


Adam Freeman

https://textbookfull.com/product/essential-typescript-4-from-beginner-
to-pro-second-edition-adam-freeman/

textbookfull.com

Angular Development with Typescript Second Edition Yakov


Fain

https://textbookfull.com/product/angular-development-with-typescript-
second-edition-yakov-fain/

textbookfull.com

Trigonometry Robert E. Moyer

https://textbookfull.com/product/trigonometry-robert-e-moyer-2/

textbookfull.com
Green Approaches to Biocomposite Materials Science and
Engineering 1st Edition Deepak Verma Et Al.

https://textbookfull.com/product/green-approaches-to-biocomposite-
materials-science-and-engineering-1st-edition-deepak-verma-et-al/

textbookfull.com

Pen to paper artists handwritten letters from the


Smithsonian s Archives of American Art First Edition
Archives Of American Art
https://textbookfull.com/product/pen-to-paper-artists-handwritten-
letters-from-the-smithsonian-s-archives-of-american-art-first-edition-
archives-of-american-art/
textbookfull.com

Antimicrobials in Agriculture 1st Edition Arti Gupta & Ram


Prasad

https://textbookfull.com/product/antimicrobials-in-agriculture-1st-
edition-arti-gupta-ram-prasad/

textbookfull.com

Storms in Her Head Freud and the construction of Hysteria


1st Edition Muriel Dimen Adrienne Harris

https://textbookfull.com/product/storms-in-her-head-freud-and-the-
construction-of-hysteria-1st-edition-muriel-dimen-adrienne-harris/

textbookfull.com

The Pragmatic Programmer Your Journey to Mastery 2nd


Edition David Thomas

https://textbookfull.com/product/the-pragmatic-programmer-your-
journey-to-mastery-2nd-edition-david-thomas/

textbookfull.com
Reclaiming Education Moving Beyond the Culture of Reform
1st Edition Ron Scapp (Auth.)

https://textbookfull.com/product/reclaiming-education-moving-beyond-
the-culture-of-reform-1st-edition-ron-scapp-auth/

textbookfull.com
Steve Fenton

Pro TypeScript
Application-Scale JavaScript Development
2nd ed.
Steve Fenton
Basingstoke, UK

Any source code or other supplementary material referenced by the


author in this book is available to readers on GitHub via the book's
product page, located at www.apress.com/9781484232484 . For
more detailed information, please visit
http://www.apress.com/source-code .

ISBN 978-1-4842-3248-4 e-ISBN 978-1-4842-3249-1


https://doi.org/10.1007/978-1-4842-3249-1

Library of Congress Control Number: 2017961729

© Steve Fenton 2018

This work is subject to copyright. All rights are solely and exclusively
licensed by the Publisher, whether the whole or part of the material
is concerned, specifically the rights of translation, reprinting, reuse
of illustrations, recitation, broadcasting, reproduction on microfilms
or in any other physical way, and transmission or information storage
and retrieval, electronic adaptation, computer software, or by similar
or dissimilar methodology now known or hereafter developed.

Trademarked names, logos, and images may appear in this book.


Rather than use a trademark symbol with every occurrence of a
trademarked name, logo, or image we use the names, logos, and
images only in an editorial fashion and to the benefit of the
trademark owner, with no intention of infringement of the
trademark. The use in this publication of trade names, trademarks,
service marks, and similar terms, even if they are not identified as
such, is not to be taken as an expression of opinion as to whether or
not they are subject to proprietary rights.

While the advice and information in this book are believed to be true
and accurate at the date of publication, neither the authors nor the
editors nor the publisher can accept any legal responsibility for any
errors or omissions that may be made. The publisher makes no
warranty, express or implied, with respect to the material contained
herein.

Printed on acid-free paper

Distributed to the book trade worldwide by Springer


Science+Business Media New York, 233 Spring Street, 6th Floor,
New York, NY 10013. Phone 1-800-SPRINGER, fax (201) 348-4505,
e-mail orders-ny@springer-sbm.com, or visit
www.springeronline.com. Apress Media, LLC is a California LLC and
the sole member (owner) is Springer Science + Business Media
Finance Inc (SSBM Finance Inc). SSBM Finance Inc is a Delaware
corporation.
For Rebecca, Lily, Deborah, Victoria, and Mum
Introduction
Atwood’s Law: any application that can be written in JavaScript
will eventually be written in JavaScript.
—Jeff Atwood

TypeScript is a language created and maintained by Microsoft,


and released under an open-source Apache 2.0 License (2004). The
language is focused on making the development of JavaScript
programs scale to many thousands of lines of code. In fact,
Microsoft has written both the Azure Management Portal (1.2 million
lines of code) and the Visual Studio Code editor (300,000 lines of
code) in TypeScript. The language attacks the large-scale JavaScript
programming problem by offering better design-time tooling,
compile-time checking, and dynamic module loading at runtime.
As you might expect from a language created by Microsoft, there
is excellent support for TypeScript within Visual Studio, but plenty of
other development tools have also added support for the language,
including VS Code, WebStorm, Eclipse, Sublime Text, Vi, Atom,
IntelliJ, and Emacs among others. The widespread support from
these tools as well as the permissive open-source license makes
TypeScript a viable option outside of the traditional Microsoft
ecosystem.
The TypeScript language is a typed superset of JavaScript, which
is compiled to plain JavaScript in the flavor of your choosing. This
makes programs written in TypeScript highly portable as they can
run on almost any machine — in web browsers, on web servers, and
even in native applications on operating systems that expose a
JavaScript API, such as WinJS.
The language features found in TypeScript can be divided into
three categories based on their relationship to JavaScript (see Figure
1 ). The first two sets are related to versions of the ECMA-262
ECMAScript Language Specification, which is the official specification
for JavaScript. The ECMAScript 5 specification forms the basis of
TypeScript and supplies the largest number of features in the
language. Subsequent versions of the ECMAScript specification are
rolled into TypeScript releases, often as early previews that feature
down-level compilation to older versions of the specication. The third
and final set of language features includes items that are not
planned to become part of the ECMAScript standard, such as
generics and type annotations. All the additional features of
TypeScript can be output to a number of widely supported versions
of JavaScript.
TypeScript has several native frameworks, including Angular,
Ionic, RxJs 5, and Dojo 2. Additionally, because TypeScript is such a
close relative of JavaScript, you can consume the myriad of existing
libraries and frameworks written in JavaScript; Aurelia, Backbone,
Bootstrap, Durandal, jQuery, Knockout, Modernizr, PhoneGap,
Prototype, Raphael, React, Underscore, Vue, and many more are all
usable in TypeScript programs. Correspondingly, once your
TypeScript program has been compiled it can be consumed from any
JavaScript program too.
TypeScript's similarity to JavaScript is beneficial if you already
have experience with JavaScript or other C-like languages. The
similarity also aids the debugging process as the generated
JavaScript correlates closely to the original TypeScript code. Source
maps can also be generated to aid debugging, with browser
developer tools displaying your TypeScript code during in-browser
debugging.
Figure 1. TypeScript language feature sources
If you still need to be convinced about using TypeScript or need
help convincing others, I summarize the benefits of the language as
well as the problems it can solve in the following sections. I also
include an introduction to the components of TypeScript and some of
the alternatives. If you would rather get started with the language
straight away, you can skip straight to Chapter 1 .
Who This Book Is For
This book is for programmers and architects working on large-scale
JavaScript programs, either running in a browser, on a server, or on
an operating system that exposes a JavaScript API. Previous
experience with JavaScript or another C-like language is useful when
reading this book, as well as a working knowledge of object
orientation and design patterns, although I'll cover some aspects of
this in detail later.

Structure
This book is organized into ten chapters and four appendices.
Chapter 1 : TypeScript Language Features: describes the
language features in detail, from simple type annotations to
important structural elements, with stand-alone examples of
how to use each one.
Chapter 2 : Code Organization: clarifies how code can be
organized, loaded, and packaged with a view to growing your
program to millions of lines of code.
Chapter 3 : The Type System: explains the details of working
within TypeScript's structural type system and describes the
details on type erasure, type inference, and ambient
declarations.
Chapter 4 : Object Orientation in TypeScript: introduces the
important elements of object orientation and contains examples
of design patterns and SOLID principles in TypeScript. This
chapter also introduces the concept of mixins with practical
examples.
Chapter 5 : Understanding the Runtime: describes the impact
of scope, callbacks, events, and extensions on your program.
Chapter 6 : Running TypeScript in a Browser: a thorough
walkthrough including working with the Document Object
Model, AJAX, session and local storage, IndexedDB, geolocation,
hardware sensors, and web workers as well as information on
packaging your program for the Web.
Chapter 7 : Running TypeScript on a Server: an explanation of
running programs on a JavaScript server with examples for
Node and a basic end-to-end example application written in
Express and Mongoose.
Chapter 8 : Exceptions, Memory, and Performance: describes
exceptions and exception handling with information on memory
management and garbage collection. It includes a simple
performance testing utility to exercise and measure your
program.
Chapter 9 : Using JavaScript Libraries: explains how to
consume any of the millions of JavaScript libraries from within
your TypeScript program, including information on how to create
your own type definitions and how to migrate your JavaScript
program to TypeScript.
Chapter 10 : Automated Testing: a walkthrough of automated
testing in your TypeScript program with examples written using
the Jest framework.
Appendix 1: JavaScript Quick Reference: an introduction to the
essential JavaScript features for anyone who needs to brush up
on their JavaScript before diving into TypeScript.
Appendix 2: TypeScript Compiler: explains how to use the
compiler on the command line and describes many of the flags
you can pass to customize your build.
Appendix 3: Bitwise Flags: dives into the details of bitwise
flags including the low-level details of how they work as well as
examples using TypeScript enumerations.
Appendix 4: Coding Katas: introduces the concept of coding
katas and provides an example for you to try, along with
techniques you can use to make katas more effective.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
The TypeScript Components
TypeScript is made up of three distinct but complementary parts,
which are shown in Figure 2 .

Figure 2. The TypeScript components

The language consists of the new syntax, keywords, and type


annotations. As a programmer, the language will be the component
you will become most familiar with. Understanding how to supply
type information is an important foundation for the other
components because the compiler and language service are most
effective when they understand the complex structures you use
within your program.
The compiler performs the type erasure and code
transformations that convert your TypeScript code into JavaScript. It
will emit warnings and errors if it detects problems and can perform
additional tasks such as combining the output into a single file,
generating source maps, and more.
The language service provides type information that can be used
by development tools to supply autocompletion, type hinting,
refactoring options, and other creative features based on the type
information that has been gathered from your program.
Compile or Transpile?
The term transpiling has been around since the last century, but
there is some confusion about its meaning. In particular, there has
been some confusion between the terms compilation and
transpilation. Compilation describes the process of taking source
code written in one language and converting it into another
language. Transpilation is a specific kind of compilation and
describes the process of taking source code written in one language
and transforming it into another language with a similar level of
abstraction . So, you might compile a high-level language into an
assembly language, but you would transpile TypeScript to JavaScript
as they are similarly abstracted.
Other common examples of transpilation include C++ to C,
CoffeeScript to JavaScript, Dart to JavaScript, and PHP to C++.

Which Problems Does TypeScript Solve?


Since its first beta release in 1995, JavaScript (or LiveScript as it was
known at the time it was released) has spread like wildfire. Nearly
every computer in the world has a JavaScript interpreter installed.
Although it is perceived as a browser-based scripting language,
JavaScript has been running on web servers since its inception,
supported on Netscape Enterprise Server, IIS (since 1996), and on
Node since 2011. JavaScript can even be used to write native
applications on operating systems such as Windows.
Despite its popularity, it hasn't received much respect from
developers — possibly because it contains many snares and traps
that can entangle a large program much like the tar pit pulling the
mammoth to its death, as described by Fred Brooks (1975). If you
are a professional programmer working with large applications
written in JavaScript, you will almost certainly have rubbed up
against problems once your program chalked up a few thousand
lines. You may have experienced naming conflicts, substandard
programming tools, complex modularization, unfamiliar prototypal
inheritance that makes it hard to reuse common design patterns
easily, and difficulty keeping a readable and maintainable code base.
TypeScript solves problems such as these.
Because JavaScript has a C-like syntax, it looks familiar to most
programmers. This is one of JavaScript's key strengths, but it is also
the cause of many surprises, especially in the following areas:
Prototypal inheritance
Equality and type juggling
Management of modules
Scope
Lack of types
Typescript solves or eases these problems in several ways. Each
of these topics is discussed in this introduction.
Prototypal Inheritance
Prototype-based programming is a style of object-oriented
programming that is mainly found in interpreted dynamic languages.
It was first used in a language called Self, created by David Ungar
and Randall Smith in 1986, but it has been used in a selection of
languages since then. Of these prototypal languages, JavaScript is
by far the most widely known, although this has done little to bring
prototypal inheritance into the mainstream. Despite its validity,
prototype-based programming is somewhat esoteric; class-based
object orientation is far more commonplace and will be familiar to
most programmers.
TypeScript solves this problem by adding classes, namespaces,
modules, and interfaces. This allows programmers to transfer their
existing knowledge of objects and code structure from other
languages, including implementing interfaces, inheritance, and code
organization. Classes and modules are an early preview of JavaScript
proposals and because TypeScript can compile to earlier versions of
JavaScript, it allows you to use these features independent of
support for the newer ECMAScript specifications. All these features
are described in detail in Chapter 1 .
Equality and Type Juggling
JavaScript has always supported dynamically typed variables, and as
a result it expends effort at runtime working out types and coercing
them into other types on the fly to make statements work that in a
statically typed language would cause an error.
The most common type coercions involve strings, numbers, and
Boolean target types. Whenever you attempt to concatenate a value
with a string, the value will be converted to a string, if you perform a
mathematical operation an attempt will be made to turn the value
into a number, and if you use any value in a logical operation there
are special rules that determine whether the result will be true or
false. When an automatic type conversion occurs, it is commonly
referred to as type juggling .
In some cases, type juggling can be a useful feature, in particular
in creating shorthand logical expressions. In other cases, type
juggling hides an accidental use of different types and causes
unintended behavior as discussed in Chapter 1 . A common
JavaScript example is shown in Listing 1.

const num = 1;
const str = '0';

// result is '10' not 1


const strTen = num + str;

// result is 20
const result = strTen * 2;

Listing 1. Type juggling

TypeScript gracefully solves this problem by introducing type


checking, which can provide warnings at design and compile time to
pick up potential unintended juggling. Even in cases where it allows
implicit type coercion, the result will be assigned the correct type.
This prevents dangerous assumptions from going undetected. This
feature is covered in detail in Chapter 3 .
The introduction of types in TypeScript does not preclude the use
of dynamic types. You can choose when to use types, and when to
go without them. TypeScript does not force you to do anything, it is
just there to help.
Management of Modules
If you have worked with JavaScript, it is likely that you will have
come across a dependency problem. Some of the common problems
include the following:
Forgetting to add a script tag to a web page
Adding scripts to a web page in the wrong order
Finding out you have added scripts that aren't used
There is also a series of issues you may have come across if you
are using tools to combine your scripts into a single file to reduce
network requests or if you minify your scripts to lower bandwidth
usage.
Combining scripts into a single script in the wrong order
Finding out that your chosen minification tool doesn't
understand single-line comments
Trying to debug combined and minified scripts
You may have already solved some of these issues using module
loading, as the pattern is gaining traction in the JavaScript
community. However, TypeScript makes module loaders the default
way of working and allows your modules to be compiled to suit the
most prevalent module loading styles without requiring changes to
your code. The details of module loading in web browsers are
covered in Chapter 6 and on the server in Chapter 7 .
Scope
In most modern C-like languages, the curly braces create a new
context for scope. A variable declared inside a set of curly braces
cannot be seen outside of that block. JavaScript has bucked this
trend traditionally by being functionally scoped, which means blocks
defined by curly braces have no effect on scope. Instead, variables
are scoped to the function they are declared in, or the global scope
if they are not declared within a function. There can be further
complications caused by the accidental omission of the var keyword
within a function, thus promoting the variable into the global scope.
More complications are caused by variable hoisting , resulting in all
variables within a function behaving as if they were declared at the
top of the function.
The introduction of the const and let variable declarations
have gone some way to solving this problem, and if you are starting
from a clean sheet you can avoid the older var variable declaration
altogether.
Despite some tricky surprises with scope, JavaScript does provide
a powerful mechanism that wraps the current lexical scope around a
function declaration to keep values to hand when the function is
later executed. These closures are one of the most powerful features
in JavaScript.
TypeScript eases scope problems by warning you about implicit
global variables, provided you avoid adding variables to the global
scope. This safety net is demonstrated in Listing 2.

function process() {
// Error! Cannot find name
'accidentalGlobal;
accidentalGlobal = 5;
}

Listing 2. Accidental global scope error

Lack of Types
The problem with JavaScript isn't that it has no types, because each
variable does have a type; it is just that the type can be changed by
each assignment. A variable may start off as a string, but an
assignment can change it to a number, an object, or even a function.
The real problem here is that the development tools cannot be
improved beyond a reasonable guess about the type of a variable. If
the development tools don’t know the types, the autocompletion and
type hinting is often too general to be useful.
By formalizing type information, TypeScript allows development
tools to supply specific contextual help that otherwise would not be
possible.
Which Problems Are Not Solved?
TypeScript is not a crutch any more than JSLint is a crutch. It
doesn’t hide JavaScript (as CoffeeScript tends to do).
—Ward Bell

TypeScript remains largely faithful to JavaScript. The TypeScript


specification adds many language features, but it doesn't attempt to
change the ultimate style and behavior of the JavaScript language. It
is just as important for TypeScript programmers to embrace the
idiosyncrasies of the runtime as it is for JavaScript programmers.
The aim of the TypeScript language is to make large-scale JavaScript
programs manageable and maintainable. No attempt has been made
to twist JavaScript development into the style of C#, Java, Ruby,
Python, or any other language (although it has taken inspiration
from many languages).

Prerequisites
To benefit from the features of TypeScript, you'll need access to an
integrated development environment that supports the syntax and
compiler. The examples in this book were written using Visual Studio
2017, but you can use VS Code, WebStorm/PHPStorm, Eclipse,
Sublime Text, Vi, Emacs, or any other development tools that
support the language; you can even try many of the simpler
examples on the TypeScript Playground provided by Microsoft. I
often use the TypeScript Playground when answering questions on
the language.
From the Visual Studio 2013 Spring Update (Update 2),
TypeScript is a first-class language in Visual Studio. Prior to this, an
additional extension needed to be installed. Although the examples
in this book are shown in Visual Studio, you can use any of the
development tools that were listed above. In particular, Visual Studio
Code is a free cross-platform editor with native TypeScript support -
so you can write your TypeScript code on any machine you have on
hand, regardless of the operating system.
It is also worth downloading and installing Node (which is
required to follow many of the examples) as it will allow you to
access the Node Package Manager and the thousands of modules
and utilities available through it. For example, you can use task
runners such as Grunt and Gulp to watch your TypeScript files and
compile them automatically each time you change them if your
development tools don't do this for you.
Node is free and can be downloaded for multiple platforms from
the official Node website.
https://nodejs.org/
To avoid being greatly sidetracked, I have avoided using any task
runners to perform additional operations outside of Visual Studio,
but once you have mastered TypeScript you will almost certainly
want to add a task runner, such as Gulp or Grunt, to your
development workflow. I have referenced some web dependencies
from the node_modules folder in the examples in this book; but on
a real-world project I would use a task runner to lift and shift the
website dependencies into a different folder that I would be happy
to deploy to a web server. The node_modules folder often contains
a great deal of files that I would not deploy to a web server.

TypeScript Alternatives
TypeScript is not the only alternative to writing to plain JavaScript.
The strongest TypeScript alternative is Babel, a compiler that
exposes the latest ECMAScript features with plugins for down-level
compilation and polyfills to make your program work in current
browsers. The aim of the Babel project is to make the latest features
available much sooner than they otherwise would be, but Babel
doesn't introduce compile-time type checking. Babel also features in
many TypeScript workflows, where Babel is executed after the
TypeScript compiler, rather than using TypeScript to perform the
down-level compilation. You can read about Babel on the official
website:
https://babeljs.io/
For a number of years, CoffeeScript was a popular alternative
with a terse syntax that compiles to sensible JavaScript code.
CoffeeScript doesn't offer many of the additional features that
TypeScript offers, such as static type checking. It is also a very
different language to JavaScript, which means you need to translate
snippets of code you find online into CoffeeScript to use them. In
2017, however, CoffeeScript reached the top three "most dreaded
languages" in the Stack Overflow developer survey (next to VBA,
and Visual Basic 6). In the same survey, TypeScript landed in the top
three most loved languages. You can find out more about
CoffeeScript on the official website:
http://coffeescript.org/
Another alternative is Google's Dart language. Dart has much in
common with TypeScript. It is class-based, object oriented, and
offers optional types that can be checked by a static checker. Dart
was originally conceived as a replacement for JavaScript, and was
only intended to be compiled to JavaScript to provide wide support
in the short term while native support for Dart was added to
browsers.
It seems unlikely at this stage that Dart will get the kind of
browser support that JavaScript has won, so the compile-to-
JavaScript mechanism will likely remain core to Dart's future in the
web browser. The decision by Google to adopt TypeScript for the
Angular project may be indicative of their commitment to Dart,
although it is still described as a long-term project. You can read
about Dart on the official website for the language:
https://www.dartlang.org/
There are also converters that will compile from most languages
to JavaScript, including C#, Ruby, Java, and Haskell. These may
appeal to programmers who are uncomfortable stepping outside of
their primary programming language.
It is also worth bearing in mind that for small applications and
web page widgets, you can defer the decision and write the code in
plain JavaScript. With TypeScript in particular, there is no penalty for
starting in JavaScript as you can simply paste your JavaScript code
into a TypeScript file later on to make the switch. Equally, there is
little penalty for writing small programs in TypeScript, especially if
you already have a workflow in place to generate combined or
minified files each time you save your application.

Summary
TypeScript is an application-scale programming language that
provides early access to proposed new JavaScript features and
powerful additional features like static type checking. You can write
TypeScript programs to run in web browsers or on servers and you
can reuse code between browser and server applications.
TypeScript solves many problems in JavaScript, but it respects
the patterns and implementation of the underlying JavaScript
language, for example, the ability to have dynamic types.
You can use many integrated development environments with
TypeScript, with several providing first-class support including type
checking and autocompletion that will improve your productivity and
help eliminate mistakes at design time.

Key Points
TypeScript is a language, a compiler, and a language service.
You can paste existing JavaScript into your TypeScript program.
Compiling from TypeScript to JavaScript is known specifically as
transpiling.
TypeScript is not the only alternative way of writing JavaScript,
but it has gained incredible traction in its first five years.
Visit https://textbookfull.com
now to explore a rich
collection of eBooks, textbook
and enjoy exciting offers!
Acknowledgments
A book is enjoyable when you work with the right people, and those
people are Gwenan Spearing at Apress and my smart technical
reviewers Rich O’Kelly, Martin Milsom, Dan Horrocks-Burgess, and
Jamie Wright. I am incredibly grateful to Nancy Chen for being so
patient with my sporadic writing habits, last-minute changes, and
vague estimates.
This second edition would not have been possible without the
contributions of all the smart people that helped create the first
book; Mark Jones, Mark Rendle, Basarat Ali Syed, Christine Ricketts,
Boris Yankov, Diullei Gomes, Masahiro Wakame, Jason Jarrett, Bart
van der Schoor, John Reilly, Igor Oleinikov, Luke Hoban, Jonathan
Turner, and of course - Ryan Cavanaugh.
I am also grateful to all of my amazing colleagues, past and
present, who inspire me to keep learning and growing.
Contents
Chapter 1:​TypeScript Language Features

JavaScript Is Valid TypeScript

Variables

Constants

Types

Type Annotations

Primitive Types

Object and Dynamic Types

Enumerations

Union Types

Literal Types

Intersection Types

Arrays

Tuple Types

Dictionary Types

Mapped Types

Type Assertions

Type Guards
Discriminated Unions

Operators

Increment and Decrement

Binary Operators

Bitwise Operators

Logical Operators

Type Operators

Destructuring

Spread Operator

Functions

Optional Parameters

Default Parameters

Rest Parameters

Overloads

Specialized Overload Signatures

Arrow Functions

Function Currying

Interfaces

Classes

Constructors
Access Modifiers

Properties and Methods

Class Heritage

Abstract Classes

Scope

Type Information

Generics

Generic Functions

Generic Interfaces

Generic Classes

Type Constraints

TypeScript Futures

Summary

Key Points

Chapter 2:​Code Organization

Namespaces

Modules

Module Re-Exporting

Default Exports

Exports Object
Random documents with unrelated
content Scribd suggests to you:
suuntaan, vaan saatiin ainoastaan kiertää eteen sattuvia esteitä ja
sentähden laivamies Bob määrättiin kokkaan, voidakseen ilmoittaa
perämiehelle jokaisen uuden vaaran.

Ei sittenkään voitu niitä kiertää. Kaksi kertaa ajoivat kiini ja toisen


kerran niin lujaan kahden korallisärkän väliin, että melkein tunti kului,
ennenkuin pääsivät irti. Ankaran työn perästä saivat venheen
luodolta ja jatkoivat matkaa.

Mukaan-otetun kartan jälkeen löytyi Torres-salmessa kolme isoa


kanavaa, joista pohjaisin oli syvin, keskimäinen varmin ja eteläisin
suorin. Venheelle olivat kaikki kolme yhtä varmoja, sillä kylliksi syvää
vettä löysivät kaikkialla; vaan Black ehdoitteli seuraamaan sitä, jossa
olivat ja joka hänen mielestään oli keskimäinen; sillä hänen
laskujensa mukaan oltiin ainakin tähän tultu.

Katteini Oilytt'istä ei ollut venheessä olo hauskaa ja toivoikin


sentähden niin pian kuin mahdollista päästä johonkin intialaiseen
satamaan, sillä semmoista ei nyt enää ollut Austraalian pohjaisella
rantamaalla, sitte kun Englantilaiset olivat hylänneet sen ainoan, joka
heillä oli Karpentaarin-lahdessa. Hän siis ykspäisesti vaati
purjehtimista etelään. Kun juuri näkivät edessään kaidan, viheriöillä
pensaskasveilla kukoistavan saaren, käskettiin siis toinen perämies
hellittämään purjenuoraa ja jättämään edessä olevan santakarin
oikealle kädelle.

Koska oli jotenkin yhdentekevä, mitä kulkuväylää seuraisivat,


koska kaikki veivät Intian valtamereen, ei Mate inttänyt vastaan; ja
nyt kääntyi venhe kaakkoiseen suuntaan, joka vei heidät leveään
kanavaan, jossa kululleen ei mitään estettä näkynyt olevan.
Kartan jälkeen päättäen olivat he Austraalian pohjaisimman
nokan, Kap Yorkin, kohdalla ja he luulivatkin tuntevansa sen
etelässä. Ainakin näkyi pitkä maajuorma, vaan sen yli näytti
ikäänkuin sumu leijuilevan; auringonlaskun aikana päättivät sitä
paitsi heittää purtensa ankkuriin ja nousta maalle jollekin ympärillä
olevista hietasaarista, koska sen perästä olisi mahdoton varoittaa
itseään veden alla ehkä väjyvistä korallikarista. He laskivat siis
eräälle likeiselle saarelle, jolla rannalla kasvavista pensaista edes
saattoi tehdä valkean ja siten saada teeveden tai groggin kanssa
lämmintä ruokaa. Myöskin taisi paremmin maata lämpimällä hiekalla
kuin venheessä, jossa ei edes saanut ojentaakaan itseään
kunnollisesti.

Seuraavana aamuna herätessään näkivät venheensä olevan


korkealla kuivalla hiekkarannalla. He olivat unhottaneet nousuveden
aikana hinata vesille venhettänsä, joka siis oli jäänyt kiini. Muuta
neuvoa ei ollut kuin kärsivällisesti odottaa tulvavettä; sillä olisi ollut
vaikea, ehkäpä mahdotonkin kulettaa tyhjääkin venettä hiekassa,
saatikka nyt, kun se oli lastissaan. Ja mikä vahinko odotuksesta olisi
voinut ollakaan? Ruokavarat ja vesi riittivät ainakin kymmeneksi tahi
kahdeksitoista päiväksi, viiniä ja paloviinaa oli kyllin neljäksi viikoksi;
viimisten vaivuin perästä odottivat he lyhyttä lepoa.

Nousuveden aikana pääsivät taas irti ja taisivat jatkaa matkaansa;


jo samana iltana rupesi hiljainen tuuli puhaltamaan, että edes
pääsivät mannermaan näkyviin. Katteinin käskystä laskivat nyt maan
rantaa pitkin, vaan kuitenkin niin kaukana siitä, ettei heitä voisi häiritä
mustat alkuasukkaat, jotka ehkä kuljeskelivat pitkin rantaa.

Jos ilma olisi ollut uhkaava, olisi katteinin varovaisuus, aukinaisella


venheellä pysytellä niin paljon kuin mahdollista lähellä maata, silloin
ollut oikeutettu; sillä hätätilassa olisi siten jonkun niemen takana
voinut odottaa myrskyn lakkaamista. Vaan nyt oli taivas kirkas ja
sininen, tuuli oli tuskin tavallinenkaan purjeviuhka ja Mate puistikin
tyytymätönnä päätään, tahtoen jättää rantamaan ja laskea suoraan
pohjaiseen, jossa toivoi tapaavansa jonkun laivan. Katteini Oilytt ei
kuitenkaan antanut perää, vaan pakoitti laskemaan viistoon pitkin
Karpentaarialahta, saadakseen vielä kerran tarkastaa maata ja sitte
purjehtia rantaa kohden.

Kuitenkin täytyi heidän kolme päivää risteillä lahdessa, menemättä


yöksi maalle; merikorttien jälkeen eivät he tässä tarvinneet peljätä
luotoja yhtävähän kuin santakariakaan; näkyviin tuli Kap Arnheim'in
niemi ja tätä kohden he laskivat. Suunta oli heillä oikea; vaan kun
eivät hiukkaakaan tunteneet merenvirioja näissä vesissä, olivat he
luultavasti purjehtineet liian paljon etelään, koska tulivat itse lahteen;
sillä neljännellä vuorokaudella Torres-salmesta lähdettyä, keksivät
he vasten luuloaan maata oikealla kädellä, kun sitä olisi pitänyt
nähdä vasemmalla. Katteini Oilytt sanoi sen olevan Wessel-saaren
ja että Austraalian pohjaisranta sen mukaan oli etelämpänä; vaan
kun jonkun ajan laskivat samaan suuntaan, keksivät, ettei edessään
ollutkaan pieni saari, vaan oli se enemmän mannermaan näköinen ja
katteini Oilytt seurasi lopullisesti tällä kertaa perämiehen neuvoa
luuvata ylemmäksi ja jättää saari tahi mannermaa — mikä se saattoi
olla — alihankaan.

Pian tulikin selväksi Matella olleen oikein, sillä puolipäivään


saakka purjehtivat rantaa pitkin lännessä löytämättä kulkuväylää ja
kun kello 12 tarkastivat asemaansa, keksivät olevansa viisi tahi kuusi
englannin penikulmaa alempana varsinaista niemen-nenää.
Siten oli heiltä mennyt hukkaan paljo aikaa ja pahin seikka oli, kun
paahtavassa kuumuudessa olivat vähentäneet vesivarojansa
enemmän kuin olisi pitänyt. Katteini joi lakkaamatta ja vähien
vesivarojen järjellinen jakaminen tuli senkautta mahdottomaksi; sillä
silloin ei voinut väkeäkään kieltää juomasta niin usein kun heitä
janotti, koska haaksirikon jälkeen vesivarat olivat kaikkien yhteinen
omaisuus.

Tämän lisäksi tuli vielä, että tuuli hiljeni ja töin tuskin täytti purjeet.
Jos näin hirmuisessa kuumuudessa meri olisi tyyntynyt, saivat silloin
odottaa surullista aikaa. Toinen vähemmän miellyttävä keksintö oli,
kun merenvirta oli heille vastainen, jota seikkaa eivät voineet keksiä
aukealla vedellä. Vaan mitä enemmän lähenivät rantaa, sitä
selvemmin huomasivat tuskin pääsevänsä paikalta. Vaan kuinka
saattoi käydäkään jos airoilla olisivat pahoitetut kuljettamaan
raskasta parkaasia?

Katteini Oilytt ei tästä näkynyt piittaavan; — eihän hän tarvinnut


soutaa, koska se oli laivamiesten tointa ja tavaran-hoitaja
vieressään, jonka täytyi hänelle sekoittaa groggi-lasin toisensa
perään, makasi hän toiset puolet aikoja.

Viimein pääsivät he iltapuoleen lahden luoteiselle niemekkeelle;


vaan juuri se, jota Black pelkäsi, tapahtui: tuuli hiljeni tykkänään ja
vasta pari tuntia auringonlaskun jälkeen puhalsi heikko, tuskin
huomattava viuhka, jonka avulla he nyt niemekkeesen kulkevassa
merenvirrassa, hitaasti purjehtivat rantaan päin. Vaan tämäkin
viuhka herkesi tuulemasta aamupuolella ja vesi näytti, kun aurinko
viimeinki nousi, liikkumatonna sulatetulta lyijyltä — ja yhtä kuuma oli
ympärillä oleva ilmakin.
Kun ei muuten voitu päästä, eteenpäin, täytyi miesten tarttua
airoihin ja erittäinkin laiska tavaran-hoitaja päästi monta huokausta,
kun ryhtyi tähän hänelle outoon työhön, joka oli kaksinkerroin
vaikeampi tässä kuumuudessa. Ja kuinka hirmuisen hitaasti saivat
venheen sittekin kulkemaan? Laivamiehet, jotka eivät tunteneet sen
maan laatua, jonka metsäisiä rantoja pitkin kulkivat, katselivat sitä
halukkailla silmillä. Siellä olisi ollut suloisia katvepaikkoja, metsässä
luultavasti myös lähteitä raittiilla, kylmällä vedellä, jolla voisivat
virkistää itseään; ja toiselta puolen, eihän se tehnyt asiassa mitään,
jos Itä-intian saarille jouduttaisiin päivää ennemmin tai myöhemmin!

Katteinilla lienee ollut samanlaiset ajatukset. Hän oli herännyt ja,


istuen matrassillaan, katseli metsäisiä rantoja. Vaan luultavasti hän
ei vielä selvään nähnyt; silmänsä taisivat haristaa. Hän pisti siis
kätensä laidan yli veteen ja pesi ensin silmänsä merivedellä, sitte
kasteli myös päätä ja otsaa, joita vaivasi polttava kuumuus.
Vanhasta tottumuksesta katseli hän purjetta, taivasta ja
taivaanrantaa; vaan purje riippui velttona mastossa, taivaalla ei
näkynyt pilvenhetaletta, taivaanrannalla ei purjetta eikä maata, jos ei
kysymykseen ota paria pientä ja vaaleata hietasaarta, jotka olivat
vastapäätä niemennenää.

"Kuulkaapa Black", sanoi katteini koottua ajatuksensa, "tässä on


kirottava kuumuus; millä kannalla ovat vesivaramme?"

"Hyvin huonolla, katteini", vastasi kysytty, joka yöllä samasta


asiasta oli neuvotellut toisen perämiehen kanssa, "viimeisinä päivinä
olemme juoneet liian paljon ja kun emme tiedä, kuinka kauan tässä
paatissa täydymme olla merellä, ei tästä päivästä saakka kukaan
saa osakseen enemmän kuin puolen tuoppia."
"Kirottu seikka", murisi katteini, "sekö vielä puuttui. Käskinhän
kuitenkin sen puupään, tavaran-hoitajan laskemaan venheesen vettä
niin paljon kuin mahdollista."

"Vettä olikin runsaasti", sanoi Black; "vaan ensimäisinä päivinä


oikein kilvalla koiteltiin vähentää sitä, se täytyy kuitenkin lakata, jos
emme kaikki tahdo kuolla janoon."

Katteini ei vastannut heti, vaan katsoi kauan aikaa hiljaa ja


tyytymätönnä eteensä.

"Kun ei laivojakaan tule näkyviin", sanoi hän lopullisesti,


"auttamaan meitä tästä kurjasta paikasta".

"Tämmöisellä tyynellä", sanoi perämies, "ovat hekin paikoillaan ja


sitä paitsi emme ole laivain kulkutielläkään. Jos te, katteini Oilytt,
olisitte seuranneet minun neuvoani ja antaneet laskea pohjaiseen,
niin olisimme varmaan voineet kohdata jonkun, sillä, niinkuin itsekin
tiedätte, lähti jälestämme Sydneystä muutamia laivoja kulkemaan
samaa tietä kuin mekin. Vaan tänne tuskin kukaan tullee ja mitä
ennemmin siis käännymme pohjaiseen, sitä parempi."

Laivamiehet jatkoivat hitaasti soutuaan; kirvesmies rupesi tavaran-


hoitajan sijaan, koska katteini huusi tätä. He olivat risteilleet pienen
Arnheimin lahden yli ja lähenivät taas maata, joka siellä täällä kohotti
metsäisiä rantakunnahiaan.

"Emmekö laske pohjaiseen, katteini Oilytt?” kysyi taaskin Black.

"Katsokaamme ensin minkä muotoinen maa on", sanoi katteini,


"Meneehän siellä edes jossakin vettä. Edessämme oleva lähin saari
on Timor ja sinne lienee ainakin yhdeksänkymmentä penikulmaa
tästä. Jos laivaa emme tapaa, olemme varmaan kuoleman omat”.

"Vaan näillä mailla emme löydä vettä niin märkääkään, katteini,


siitä voitte olla täydellisesti vakuutettu", sanoi Black, "pari päivää
ennen lähtöämme Sydneystä puhuttelin erästä maanmiestäni, joka
oli oleskellut vuoden Karpentaaria-siirtokunnassa. Se on
surkuteltava maa, jossa ei ole muuta kuin hietaa ja suolaa. Sitä paitsi
emme rohkene edetä rannalta, sillä täällä ympärillä vetelehtää
joukko mustia ihmisiä, joiden pariin en ainakaan minä tahtoisi tulla."

Eikös muassamme ole pyssyjä ja ampumavaroja?⁴⁴ tuumasi


katteini.
"Pelkäättekö ehkä tätä mustaa roistoväkeä?"

”Peljätä heitä”, sanoi perämies ylenkatseella. "En tarvitse heitä


peljätä, vaan en tahdo myöskään turhan-päiten juosta vastaansa. En
myöskään ole erittäin kätevä maalla; niinkauan kun minulla on
sininen vesi allani, olen kuin kotonani, vaan pensasten ja puiden
kanssa ei minulla ole mitään tekemistä. Seuratkaa ainoastaan tällä
kertaa neuvoani, herra katteini. Saatte nähdä, että kohtaamme
jonkun laivan, ja ulompana merellä saamme enemmän tuultakin.
Eihän näin kuuman maan läheisyydessä mitään ilmanvetoa voi
syntyä, jos ei jolloinkulloin tuulen puuska mereltä sitä vaikuta, ja",
liitti hän matalammalla äänellä, "miehet kohta väsyvät soudusta.
Tämmöisellä kuumuudella onkin se vaikeata työtä."

Koko ajan, kun Black puheli, katseli katteini lähellä olevata rantaa
lakkaamatta. Nyt otti hän pitkän, vieressään olevan laivakiikarin ja
tarkasteli samoja tienoita vielä tarkemmin.
Parkaasi tuli yhä lähemmäksi rantaa, jolla jo taisi nähdä tuskin
huomattavan veden kuohun. Ranta näytti melkein veden rajaan
kasvavan metsää ja ainoastaan kaita viileke maata metsän ja veden
välissä olevan korallihiekalla peitetyn. Muutamat kukkulat olivat
peitetyt heikolla kasvullisuudella, vaan enemmän kaukana olevat
näyttivät paljailta, samoin kuin ehkä koko ympärillä oleva maakin,
joka ainoastaan kostealla merenrannalla näyttää runsaampaa
kasvullisuutta.

Katteini ei näyttänyt olevan oikein tyytyväinen rantamaan muodon


kanssa; sillä hän kiikarilla katseli sitä useamman kerran,
pysähtymättä mihinkään erikoiseen paikkaan.

Tuuli oli nyt tykkänään lakannut; mahdollista oli, että se oli


kääntynyt kaakkoon, joten vuoret ja kukkulat estivät sen täällä
tuntumasta. Ei minkäänlaista ilmanvetoa huomannut ja aurinko oli
polttanut rakkuloille miesten kaulat ja kädet. Vaan tästä he eivät
saaneet pitää lukua. He eivät voineet jäädä tähän odottamaan tuulta,
sillä siten olisivat tehneet olonsa yhä vaarallisemmaksi, koska nyt jo
vesivaransa olivat melkein loppuneet. Ainoa keino ehkä pelastua, oli
soutaa niin kauan kun voimansa riittivät.

Tavaran-hoitajan täytyi taas ryhtyä työhön ja samoin toinenki


perämies vuoroitteli laivamiesten kanssa, sill'aikaa kun Black piti
perää. Katteini Oilytt yksinään ei piitannut mistään, katselihan vaan
maata useamman kerran kiikarin läpi ja joi viinaa sitä enemmän,
koska vettä piti säästää.

Sill’aikaa olivat kulkeneet pienen Melville-lahden poikki ja soutivat


nyt sen luoteiseen niemekkeesen, joka ylempänä näytti olevan iso
tasainen lakeus. Auringon-laskun aikana huomasi katteini
halkeaman eräässä mannermaan vuoressa ja tässä toivoi hän
löytävänsä raitista vettä. Tosin ei yöllä rohkeaisi nousta rannalle;
vaan hän päätti, ettei tästä tienoosta lähdettäisi ennen kuin oli saatu
tietää, minkä laatuista maa oli. Siellä täällä oli joukko pieniä saaria;
hän antoi miesten illan viileässä ilmassa soutaa vielä kello
yhdeksään, pyysi sitte hyvin kohteliaasti, mutta samalla vakaasti,
Black'in laskemaan likimäiselle hietasaarelle, jossa piti viettää yötä.
Seuraavana aamuna päättäisivät, mitä piti tehtämän ja mihin
suuntaan lähdettämän; kohta karahtelikin kokka hietarannalle, jollen
laivamiehet tyytyväisinä hyppäsivät, saadakseen vielä kerran ojentaa
puutuneet jäsenensä.
TOINEN LUKU.

Raittiin veden etsiminen.

Saaren pohjaisella, korkeimmalla paikalla kasvoi tosin muutamia


pensaita ja laivamiehillä oli hyvä halu tehdä niistä valkea; vaan
tämän kielsi Black tykkänään, koska, jos mannermaalla heidän
läheisyydessään todella kuljeskeli mustia ihmissukuja, ei ollut
tarpeellista sopimattomalla ajalla ja varten vasten ilmoittaa
haaksirikkoisten tuloa, semminkin kun tuli näkyisi koko lavealle
rantamaalle.

Katteinille ei tämä kielto ollut mieluinen. Hän oli edeltä kättä


iloinnut saavansa väriä vettä, tehdäksensä groggia siitä vesi-
osastaan, jonka hän tarkoin iltaa varten oli säästänyt; vaan hän ei
voinut antaa päinvastaista käskyä ja mukautui siis hänkin
perämiehen käskyyn. Jos mannermaalta löytäisivät vettä, jota hän ei
epäillyt, ajatteli hän seuraavana iltana nousta jollekin saarelle, ja kun
eivät silloin enää tarvitsisi peljätä mustia roistoja, valmistaisi hän
rauhassa rakkaan grogginsa.

Mukavasti maaten lämpöisellä hiekalla viettivät he yönsä hyvästi


tämän leveysasteen miedossa ilmanalassa. Hyönteiset eivät heitä
myöskään vaivanneet ja heiltä puuttui ainoastaan raitista ja kylmää
lähdevettä, voidaksensa vielä kerran mielinmäärin täyttää janoansa.
Vaan olihan maa tuossa vastapäätä; tekihän katteinin mieli sinne,
jossa seuraavana päivänä ehkä olisivatkin, ja sitte piti käännyttämän
Itä-intian saaristoa kohti — jos ei vaan se vaivaloinen soutaminen
olisi ollut.

Kaikki eivät kuitenkaan tänä yönä maanneet; Black ei sitä sallinut.


Kaksi miestä täytyi maata venheessä, sillä eihän voitu tietää, mitä
saattoi tapahtua; sillä perämies ajatteli mustista asukkaista
kaikenmoista pahuutta. Senlisäksi hän määräsi vartiaksi yhden
miehen, jonka sijaan joka tunti astuisi toinen. Itse tahtoi hän vartioida
aamupuhteella, koska, jos villeillä on tarkoitus hyökätä jonkun
matkuen kimppuun, lie melkein aina säästävät sen aamupuhteesen,
jolloin vartioimista ei tahtonut muille uskoa.

Senkin puolesta oli joidenkuiden valvominen tarpeellinen että


parkaasi pysyisi vedessä, ettei se luoteen aikana taas jäisi kuivalle
maalle, jolloin se epätasaisen lastinsa vuoksi helposti halkeaisi
vuotavaksi. Muutoin näyttäytyi pelkonsa mustien suhteen olleen
perätön; sillä heitä ei vähääkään häiritty ja kaikesta näkyi ettei heitä
paitsi yhtään inhimillistä olentoa ollut koko tienoolla. Päivän tultua
tarkasti Black turhaan pitkällä laivakiikarilla rantaa. Nousevaa savua
ei huomattu missään ja yhtä vähän taisi muutakaan epäilyksen
alaista keksiä. Ehkä tämä niemeke, mikä se kartan jälkeen täytyi
olla, oli tällä kertaa tykkänään asumaton; sillä hän tiesi hyvin, ettei
Austraalian villeillä suvuilla ole pysyväistä asuntopaikkaa, vaan että
he kulkevat paikasta toiseen.

Näin ollen, ei veden etsintäretki mannermaalla ollut ollenkaan


vaarallinen, vaikka ei Black uskonut sen onnistumista, senmukaan
kun hän oli maan luonnosta kuullut kerrottavan. Vaan se oli katteinin
tahto ja sitä paitsi eivät sittemmin tarvitsisi nuhdella lisiänsä, etteivät
viimiseen saakka koitelleet enentää vesivarojansa. Tosin heiltä täten
meni hukkaan kokonainen matkapäivä, vaan häntä lohdutti sekin
seikka, ettei tänäkään aamuna tuullut hiukkaakaan. Taas olisi heidän
täytynyt tarttua airoihin, jota kulkutapaa merimies enimmän vihaa.

Katteini Oilytt oli kaiken tämän antanut tapahtua, piittaamatta


vahdista tai muusta. Hietarannalle nostetulla matrassillaan joi hän
vielä iltasella "jäykän" grogg'insa ja poltteli nysä-piipullansa, jonka
tehtyä hän, varjeltuakseen yökasteesta, veti korvillensa villapeitteen;
hän makasi rauhallisesti auringon nousuun, jolloin Black hänen
herätti, koska ei yksikään silmänräpäys saanut hukkaan mennä.

Aamiainen oli pian syöty; sillä kun syötiin kylmää ruokaa, ei sitä
kauan tarvittu valmistaa. Parkaasi oli myös Maten huolenpidon
kautta pidetty vesillä ja kun taas kaikki istuivat määrätyillä sijoillansa,
soudettiin iloisella mielellä maata kohden.

Black seisoi sill’aikaa kokassa ja katseli rantaa kiikarilla, kun taas


katteini Oilytt istui perässä, laskeaksensa siihen kohtaan, jossa,
ympärillä olevista kukkuloista ja rantapensaista päättäen, näytti siltä,
kuin pieni joki siinä laskisi mereen.

Mitä lähemmäksi maata tulivat, sitä varmemmiksi tulivat tässä


päätöksessänsä ja kuu olivat paikan kohdalla huomasivat maan
sisälle pistäyvän lahdekkeen kaidan suun.

"No, Black", sanoi katteini, jättäen ruotelin alaperämiehelle, "mitä


olen teille sanonut? Eikö tämä ole joki? Jos olisimme seuranneet
teidän neuvoanne, uiskentelisimme nyt merellä ja työskentelisimme
kaikin voimin tyynellä vedellä, siksi kun väki alkaisi nurista ja ei enää
taitaisi soutaa.

"Sydämestäni toivon, katteini Oilytt, teillä olevan oikein", sanoi


Black, "vaan ei se vielä ole varma, koska tämä yhtä hyvin saattaa
olla pieni lahti."

"Vai niin, te ette siis usko vielä? sanoi Oilytt äkäisesti.

"Täällä näyttää olevan liian monta mangrove-pensasta", vastasi


perämies kohottaen olkapäitään, "ne eivät menesty maavesien
läheisyydessä; vaan mahdollisesti kyllä voimme lahdekkeen
pohjukassa tulla lähteelle. Kaikessa tapauksessa täytyy meidän
koittaa ja huomannemme myöskin kohta, kuinka asian laita on."

Senjälkeen ei mitään puhuttu; sillä venhe laski suoraan


lahdekkeen suuta kohti ja Black puisteli ainoastaan päätään, kun
hän kahden sylen syvyydellä näki korallisärkkien vetäytyvän
lahdekkeen poikki. Korallit, näet, yhtä vähän kuin mangrovepensas,
eivät menesty suolattomassa vedessä ja suuremman joen suu tässä
taas ei voinut olla, sillä silloin olisi tämän pitänyt olla paljoa
syvemmän. Vähäinen lähde pohjukassa ei luonnollisesti taitanut
vaikuttaa sinne eikä tänne ja olisi kuitenkin riittänyt enentämään
heidän vesivarojansa.

Vaan pensaita lähetessään tuli suurempi huomaavaisuus


tarpeelliseksi, nähdäkseen, josko täällä lahdekkeessa, vaikka
aamulla ulompaa katsoen eivät huomanneet savua, ehkä voisi löytyä
syntyperäisten asukasten venheitä, joita välttämättömästi tässä piti
olla, jos villit oleskelivat näillä rannoilla. Mitään semmoista ei
kuitenkaan voitu keksiä. Päinvastoin riippuivat maailman
kummallisimman puun, mangroven, joustavat ja pitkät oksat
paksuissa melkein läpipääsemättömissä köytänneissä veden
pinnalla ja Black ei edes voinut löytää paikkaakaan, johon venheen
voisi sijoittaa; tuskin kanoottivenekään olisi voinut tunkeutua tämän
kasvullisuuden läpi ja heidänkin täytyi siis hakea tämän lehtilabyrintin
aukkoa ylempänä.

Venhe kulki hitaasti määrättyä suuntaansa ja taidettiin jo huomata


lahden korkeintaan olevan penikulman pitkän, jos se ei ylempänä
tehnyt mitään polveketta. Lahden muoto ei miellyttänyt katteinia. Hän
tunsi myöskin hyvästi mangrovepuun omaisuuden siertää suolatonta
vettä, vaan hän muisteli kuitenkin nähneensä tätä puulajia jokien
varsilla ainakin niin pitkällä suupuolesta, kuin merivesi ulottui ja
kasteli sen tuhansin tavoin luikertelevia juuria. Miksi ei asian laita
tässä voinut olla sama?

Venhe tuli tällä aikaa aina syvemmälle lahteen. Mangrovepuiden


takana oli tosin korkeampi maa; sillä siellä näki selvään toisen
puulaadun tummemmat ja kiiltävät lehdet, jotka eroitti mangrovepuun
vaaleanvihreistä. Mangrovekaistale saattoi kuitenkin olla kuuden- tai
kahdeksankymmenen jalan levyinen ja etteivät mitenkään tämän läpi
pääsisi, sen tiesivät laivamiehetkin; sillä jos venheenpituisen matkan
olisivatkin päässeet eteenpäin, olisivat sitte ainakin tarttuneet
joustaviin ja kierteleviin juuriin. Yhtä mahdoton oli kirveelläkään
raivata tietä, kun useimmat näistä olivat veden alla.

Aina enemmän lähenivät lahden pohjukkaa, joka jo vähän kaiteni.


Rannalla piti majaansa joukko villikyyhkysiä ja papukaijoja; sillä he
näkivät useita kertoja koko laumoja näitä, joista etenkin jälkimäiset
lensivät rääkyen puusta puuhun ja parvissa täyttivät näiden latvat.
Viimein tulivat lahden pohjaan, vaan eivät kuitenkaan pensasten
välitse voineet keksiä lahden jatkauvan syvemmälle. He kulkivat
pitkin köynnösten äärimäistä laitaa ja kun eivät muuta voineet keksiä
kuin mangrovepensaita, tahtoi katteini raivostuneena murtaa tien
näiden läpi. Vaan siitä hänen täytyi luopua; sillä kun olivat syrjälle
taivuttaneet etumaiset peräänantavat oksat ja vetäneet venheensä
siten saatuun tilaan, näkivät edessään semmoisen juurien, oksien ja
kantojen sekasotkun, että pienen kanoottivenheenkin olisi täytynyt
palata takaisin. Heidän täytyi siis nopeammin kulettaa parkaasi
aukealle vedelle; sillä jos luode kohtasi heitä mangrovepensasten
seassa, tiesivät varmasti saavansa istua siinä sekasotkussa
kahdeksan tai yhdeksän tuntia.

"Juuri niinkuin ajattelen", sanoi Black suuttuneena, kun taas olivat


päässeet väljemmälle vedelle, "ei yhtään juotavaa vettä tässä
kurjassa maassa ja niinpä uskon, ettemme semmoista löydäkkään,
jos vielä matkustaisimme päivän matkankin maan sisälle”.

"Te ette vieläkään usko", sanoi katteini Oilytt, joka myöskin oli
huonolla tuulella, "vaan saatte anteeksi antaa, jos minulla on
toisenlainen ajatus. Tämän lahdekkeen suhteen olemme tosin
erehtyneet; vaan minä muistelen lukeneeni austraalialaisten jokien
suussa melkein aina olevan suolaista vettä, joka muuttuu juotavaksi
vasta ylempänä maan sisällä. Semmoista löydämme ainakin siellä."

"Vaan kuinka tulemme sinne herra katteini?"

"Mangrovepensasten läpi sinne emme pääse; meidän täytyy taas


ulos tästä lahdekkeesta. Vaan sillä kohdalla, jonka sivu aamulla
sousimme, tulee korkeampi maa melkein vedenrajaan ja koska siinä
seisovat mangrovepensaat eivät ole kuuttakaan jalkaa korkeat ja
näyttävät kasvavan ainoastaan veden äyräällä, voimme hyvin siinä
nousta maalle ja sen pitää tapahtuman silmänräpäydessä".
"Ja sitte lähettää retkikunta maan sisälle?"

"Se on luonnollista⁴.

"Vaan jos tämä tapaa lauman villi-ihmisiä?"

"Entä sitte, eikö meillä ole pyssyjä ja ampuvaroja? Me näytämme


niille mustille roistoille tien Tuonelaan, jos olisivat kyllin hävyttömät
hyökkäämään päällemme; sitä paitse tarvitsemme vaan lauaista
yhden kerran, voidaksemme olla vakuutetut heidän näkymättömiin
pakenevan vuorillensa. Mustat eivät toden totta voi pitää puoliaan."

Black nosti olkapäitään; hän tiesi hyvin olevan turhan väittää


esimiestänsä vastaan, kun tämä kerran oli jotakin päättänyt. Nyt hän
tiesi tämän ajatuksen maallenoususta, ja jos hän tätä ei tahtonut
seurata, ei hän liioin voinut asiata muuttaa. Katteinilla oli oleva
edesvastaus kaikesta.

Parkaasi oli taas kääntänyt kokkansa merta kohden. Väki ei ollut


tyytyväinen, että turhaan oli soutanut lahteen; vaan kun katteini
varmasti väitti vettä likitienoilla löytyvän, alkoivat itsekin sitä uskoa;
sitä paitse oli heillä toivo päästä maalle, ja tämä on aina suuri
viehätys merimiehelle, semminkin, kun niin kyllästyvät laiva-elämään
kuin Boreas'en väki — vaikka tosin saman katteinin tähden. —
Kaikessa tapauksessa olisi se vaihettelevaista, ja kun merimiehet
ylimalkaan eivät piittaa likimmästä tulevaisuudestaan, eivät
nämäkään ajatelleet, miten seikat myöhemmin muodostuisivat.
Peräti pitkä ei matka Intian valtameren yli likeisimmille saarille
saattanut olla, ja jos vaan tuulisi, jotta saisivat heretä soutamasta,
olisivat ehkä hyvinkin lyhyen ajan perästä turvaisessa satamassa.
Airot liikkuivat taas rivakasti kun tahtoivat mitä nopeammin päästä
maan ympäröimästä lahdesta, ja ei puoltakaan tuntia kulunut,
ennenkuin parkaasi taas oli hiukan ulompana rannasta, että katteini
voisi määrätä paikan, mihin maalle nousisivat.

Tosin olivat he lii'an lähellä maata voidakseen nähdä rantamaata


kokonaisuudessaan; vaan Oilytt ei tahtonut soudattaa ulommaksi,
koska siten olisi aikaa kulunut ja miehet ehkä turhanpäiten vaan
väsyneet. Tässä oli toinen paikka yhtä hyvä kuin toinenkin ja kuin
tultiin semmoiselle paikalle, missä katteini mangrovepensasten
takana ja tuskin parinkymmenen askeleen päässä rannasta näki
korkeita puita tummine lehtineen ja pandanuskasvin pitkät, terävät
lehdet, viittasi hän toisen perämiehen kääntämään kokan sinnepäin
ja muutaman minuutin perästä raappi raudoitettu pohja
korallihiekalla.

Että olivat siis maalla, oli ainakin varma, ja mangrovepensaat


kasvoivat niin harvassa, etteivät voineet heidän maalle nousuaan
estää. Melkein joka paikasta taisi näiden läpi tunkeutua; vaan nyt tuli
tarpeelliseksi määrätä, miten miehistö jaettaisiin, voidakseen sekä
tehdä edellä mainitun retken maan sisälle kuin myös samalla
vartioida parkaasia. Sillä kuka tiesi, eikö mustat ihmiset olleet
likitienoilla, ja siinä tapauksessa oli hyvinki luultava niiden jollakin nyt
kätketyllä kanoottivenheellä etsivän rannalta parkaasin ja vievän sen
hyvänä voittosaaliina mukaansa.

Katteini olisi itse mielellään jäänyt venheesen, sillä se olisi hänestä


ollut mukavanpa, vaan hän häpesi tehdä sitä Black'in vuoksi, joka
vaaraa maalla näkyi pelkäävän. Tälle tahtoi hän näyttää, ettei hän
ainakaan ollut pelkuri; sitä paitsi ei hän muilla luullut olevan niin
suurta tietoa maisemista, että he maan ulkonäöstä jo voisivat
päättää sen paikan, jossa puro tahi lähde olisi löydettävänä, — sillä
mitään jokea ei nyt enää hänkään luullut tapaavansa.
Mukaan otettavia miehiä valitessa oli välttämätöntä ottaa
semmoisia, jotka taitaisivat käsitellä pyssyä ja tähän toimeen
varsinaiset laivamiehet harvoin kelpaavat, jos eivät sotalaivassa
siihen ole harjaantuneet. Katteinin kysymykselle vastasi Bob ennen
paljon ampuneensa, jonka vuoksi taisikin satuttaa pilkkaan, vaan Jim
sitä vastoin vakuutti ei tietävänsä pyssystä muuta, kuin että laukaus
läksi sen suusta, kun perässä olevaan liipasimeen painoi, vaan selitti
myös paremmin voivansa käsitellä kurikkaa ja tällä lyödä miehen
lailla. Kirvesmies ei liioin tahtonut kuulla puhuttavankaan
ampumisesta ja tavaran-hoitaja selitti, kun huomasi kukaties
saavansa jäädä venheelle, tekevänsä kaikki, mitä häneltä vaadittiin,
kun vaan ei tarvitsisi ampua.

"No poikaseni", sanoi katteini Oilytt, "jos niin on, niin saat kulettaa
sitte ruokavarojamme, sillä venheessä et myöskään voi olla
miksikään hyödyksi. Siis jäävät kirvesmies ja Jim venheelle, koska
tähän täytyy jättää kunnon merimies; vaan teitä neuvon etenkin,
ett'ette koske puteliani. Me muut seitsemän olemme kylliksi riittävät
tekemään tämän lyhyen retken ja sinä Jim lykkäät venheen ulos niin
kohta kuin olemme maalla ja soudat jonkun matkaa vesille, jossa
taidat laskea ankkurin pohjaan. Jos näet jonkun mustista olennoista,
vaikka en heitä luule parinkymmenen penikulman sisällä olevan
yhtään ainoata, saat ampua kiväärisi. Taitanethan edes sen verran
pyssyä käsitellä?"

"Taidanpa niinkin ja myös latatakin uudestaan; vaan saada


sattumaan, siitä en voi vakuuttaa."

"Ei se haittaa, tähtää vaan siihen suuntaan, jossa jotakin


epäilyksen alaista huomaat ja katso vaan sitte, että olette aina
väljällä vedellä, etteivät taida uimalla tulla luoksenne."
"Vaan katteini Oilytt", kysyi Black, "eiköhän olisi parasta panna
myös Ovens venheen vartiaksi? Voimmehan kuuden miehen lähteä
retkelle, vaan jos jonkun sattuman kautta kadottaisimme venheen,
sitte ainakin olemme auttamattomasti hukassa; sillä tälle rantamaalle
tuskin konsaan laivat purjehtinevat, joilta taitaisimme apua odottaa."

"Kuus miestähän meitä oikeastaan on, Black", sanoi katteini, "sillä


tavaran-hoitajaa tuskin voinemme mihinkään puolustukseen käyttää;
Jim ja kirvesmies ymmärtävät hyvinkin hoitaa venheen, semminki,
kun ainoana toimenaan on sen soutaminen kylliksi loitolle rannasta.
Jim, sido paikalla yhteen kaksittain tyhjiä putelia, että jokainen
meistä voi saada pari halttuunsa. Joko pyssyt ovat siinä kunnossa,
että niitä voi käyttää?"

"Tänä aamuna tarkastin ne itse ja panin niihin uudet nallit.


Varminta kuitenki olisi ensin paukauttaa latingit ilmaan, jos se ei
matkaan saattaisi liian kovaa jyskettä."

"Se taas ei ole tarpeellista. Luultavasti ovat ne käytettävässä


kunnossa tahi oikeammin sanoen, emme niitä ollenkaan tarvitse —
ja ainoastaan sen vuoksi otamme ne myötä, kun emme tahdo maalle
mennä aseettomina. Te, tavaran-hoitaja, sisäänpakkaatte kuitenki
kaksi putelia vettä, kolme putelia viinaa ja riittävässä määrässä
kuivaa leipää ynnä savustettua lihaa pariksi ruokaveroksi; enempää
emme tarvitse. Ehkä jo päivälliseksi voimme palata takaisin, vaan
paras on olla varuillansa. Black saa ripustaa kaulaansa laivakiikarin,
minä puolestani otan pienen teleskooppini."

Black viivytteli. — Katteinilla tosin oli edesvastaus kaikesta, mikä


koski laivaa tahi miehiä; vaan mitäs tämäkään auttoi heitä, jos
todella joku onnettomuus sattui venheelle. Täydellisesti hän ei voinut
luottaa kirvesmieheen. Tämä oli viekas ja livertelevä henkilö, joka ei
konsaan vastustanut katteinia, muutenkaan ei kelvannut mihinkään,
koska oli laiska kaikessa työssä ja näiden syiden tähden siinä
määrässä laivamiesten vihaama, ettei kukaan muu, kuin tavaran-
hoitaja, tahtonut seurustella hänen kanssaan. Jim sitä vastoin oli
kunnon laivamies, vaan myöskin, jos vähinkään tilaisuus tarjousi,
ahnas väkeviä juomia nautitsemaan; menettelisikö hän nyt
venheessä toisin? tuskin. Vaan Black oli liiaksi merimies
heittäytyäkseen pitemmäksi aikaa näin synkkiin mietteisin. Tosin
tunsi hän vaaran, jossa olivat, paremmin kuin katteini ja ei pitänyt
sitä suinkaan vähäisenä; vaan katteini Oilytt'illä oli sama pula ja jos
hän tässä käyttäytyi kevytmielisesti, sai hän vastatakin seurauksista!

Tarpeelliset valmistukset olivat nyt tehdyt. Miehet olivat saaneet


pyssynsä ja laivamiekkansa. Sitä paitsi sai jokainen kaksitoista
patruunaa ja ne molemmat putelit vyöllensä ripustettaviksi,
tuodaksensa niillä vettä. Sillä aikaa kuormitti katteini onnettoman
tavaran-hoitajan niskoille ei ainoastaan määrätyt muonavarat, vaan
myös venheesen jääpiä varten kuusi tyhjää putelia; — sitä paitsi
antoi hän vielä hänelle oman kaksipiippuisen pyssynsä siitä syystä,
kun hänen täytyi, niin hän sanoi, kanneskella ja hoitaa kiikaria.

Tavaran-hoitajan nuriseminen ei auttanut, sillä katteini ei ollut


kuulevinansakaan ja tuskin kymmenen minutin kuluttua läksi se pieni
retkeiliä-kunta liikkeelle, mursiihe mangrovepensasten läpi ja saapui
pian korkealle ja kuivalle maalle, jolla se voi astua rivakasti
eteenpäin.

Black, joka kerran ennen oli oleskellut yhden vuoden Austraalian


sisämaassa ja siellä jotenki tullut tuntemaan mustain asukasten
tapoja, katseli sill’aikaa tarkoin maata, jos jossakin voi keksiä näiden
jälkiä; vaan hän ei keksinyt mitään epäilyksen alaista ja joskin he

You might also like